Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile
中的指令自动生成映像。
docker build
命令用于从Dockerfile构建映像。可以在docker build
命令中使用-f
标志指向文件系统中任何位置的Dockerfile。
$ docker build -f /path/to/a/Dockerfile
说明不区分大小写,但必须遵循建议使用大写字母的约定。
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。
一个声明以#
字符开头则被视为注释。可以在Docker文件中使用RUN
,CMD
,FROM
,EXPOSE
,ENV
等指令。
在这里列出了一些常用的说明。
FROM
该指令用于设置后续指令的基本映像。有效的Dockerfile必须使用FROM
作为其第一条指令。
FROM ubuntu
LABEL
可以为映像添加标签来组织项目的映像。需要使用LABEL指令设置映像的标签。
LABEL vendorl = "zyiz"
RUN
该指令用于执行当前映像的任何命令。
RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME'
CMD
这用于执行映像的应用程序。应该以下列形式总是使用CMD -
CMD ["executable", "param1", "param2"?]
这是使用CMD的首选方法。Dockerfile文件中只能有一个CMD。如果使用多个CMD,则只会执行最后一个CMD。
COPY
该指令用于将来自源的新文件或目录复制到目的地的容器的文件系统。
COPY abc/ /xyz
规则
source
路径必须在构建的上下文之内。无法使用COPY ../something /something
,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护程序。
如果source
是目录,则会复制目录的全部内容,包括文件系统元数据。
WORKDIR
WORKDIR用于为Dockerfile中的RUN
,CMD
和COPY
指令设置工作目录。如果工作目录不存在,它默认将会创建。
我们可以在Dockerfile文件中多次使用WORKDIR
。