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 = "test"
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
规则
1.source路径必须在构建的上下文之内。无法使用COPY ../something /something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护程序。2.如果source是目录,则会复制目录的全部内容,包括文件系统元数据。
WORKDIR
WORKDIR用于为Dockerfile中的RUN,CMD和COPY指令设置工作目录。如果工作目录不存在,它默认将会创建。我们可以在Dockerfile文件中多次使用WORKDIR。