FROM
基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板。第一条必须是from
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
容器构建时需要运行的命令,也就是在 docker builder 时运行
两种格式:
- shell格式,RUN
- exec格式,RUN [‘可执行文件’, ‘参数一’ ,’参数二’]
EXPOSE
当前容器对外暴露出的端口
WORKDIR
指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
USER
指定该镜像以什么样的用户去执行,如果都不指定,默认是root
ENV
用来在构建镜像过程中设置环境变量,在其他指令中可以直接使用这些环境变量。比如:
ENV MY_PATH /user/mytest
WORKDIR $MY_PATH
VOLUME
容器数据卷,用于数据保存和持久化工作
ADD
将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包。这个命令相当于是 COPY + 解压的合体。
COPY
类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中
COPY src dest
COPY [“src”, “dest”]
CMD
指定容器启动后要干的事情。CMD指令的格式和RUN相似,也是shell和exec两种。
两种格式:
- shell格式,CMD
- exec格式,CMD [‘可执行文件’, ‘参数一’ ,’参数二’]
- 参数列表格式:CMD [‘参数1′,’参数2’,…]。在指定了ENTRYPOINT指令后,用CMD指定具体的参数。
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
ENTRYPOINT
也是用来指定一个容器启动时要运行的命令。类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当做参数送给ENDTRYPOINT指令指定的程序。
ENTRYPOINT可以和CMD一起用,一般是变参参会使用CMD,这里的CMD等于是在给ENTRYPOINT传参。
当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给了ENTRYPOINT指令。
他俩组合会变成
CMD与RUN的区别:CMD在docker run时运行,RUN是在 docker build时运行。
Original: https://www.cnblogs.com/knqiufan/p/16272664.html
Author: knqiufan
Title: [Docker] Dockerfile常用保留字
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570455/
转载文章受原作者版权保护。转载请注明原作者出处!