1:Dockerfile是什么?
Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。
例:docker build -f /path/to/a/Dockerfile
2:Dockerfile 基本结构
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。
3:Dockerfile 文件说明
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
4:Dockerfile常用指令
##FROM
指定基础镜像,必须为第一个命令。如果不以任何镜像为基础,那么写法为:FROM scratch,接下来所写的指令将作为镜像的第一层开始
FROM说明v1.0#RUN
RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定–no-cache参数
Dockerfile中每一个指令都会建立一层,多少个RUN就构建了多少层镜像,写多个RUN会造成镜像的臃肿、多层,不仅仅增加了构件部署的时间,还容易出错,为使Dockerfile 更加易读,易懂和便于维护,复杂的 RUN 语句用反斜杠()分割成多行
避免RUN apt-get upgrade和dist-upgrade,因为父镜像中的许多“essential”包无法在非特权容器内升级 。如果父镜像中包含的包已过期,请与其维护人员联系。如果您知道有foo需要更新的特定包,请使用 apt-get install -y foo自动更新。
始终在同一 声明中结合RUN apt-get update使用
网友评论