Docker file指令
Docker file指令
FROM
FROM是最重要的指令,用于为映像文件构建过程指定基准镜像,后续的指令运行于此基准镜像所提供的运行环境;实践中,基准镜像可以是任何可用镜像文件,默认情况下,docker build会在docker主机上查找指定镜像文件,在其不存在时,则会从 docker hub registry上拉取所需的镜像文件;如果找不到指定镜像,docker build会返回一个错误信息;
MAINTAINER
用于让dockerfile制作者提供本人的详细信息;Dockerfile并不限制MAINTAINERR指令出现的位置,但推荐将其放置于FROM指令之后;MAINTAINER用于早期dockerfile中,现在已经废弃了,推荐使用LABEL指令
LABEL
格式:LABEL
COPY
用于从Docker主机复制文件至创建的新映像文件格式: COPY
注意: 在路径中有空白字符时,通常使用第二种格式
文件复制准则:
ADD
ADD指令类似于COPY指令,ADD支持使用tar文件和URL路径操作准则:同COPY指令;如果
WORKDIR
用于为Dockerfile中所有的RUN、CMD、ENTRYPOINT、COPY和ADD指定设定工作目录;
VOLUME
用于在image中创建一个挂载点目录,以挂载Docker host上的卷或其它容器上的卷;
格式:
VOLUME
VOLUME ['
如果挂载点目录路径下此前的文件存在,docker run命令会在卷挂载完成后将此前的所有文件复制到新挂载的卷中;
EXPOSE
用于为容器找开指定要监听的端口以实现与外部通信;
格式:
EXPOSE
EXPOSE指令可一次指定多个端口;比如
EXPOSE 11211/udp 11211/tcp
ENV
用于为镜像定义所需的环境变量,并可被Dockerfile文件中位于其后的其它指令(如ENV、ADD、COPY等)所调用
调用格式为$variable_name 或${variable_name}
格式:
ENV
ENV
第一种格式中,
第二种格式可以用一次设置多个变量,每个变量为一个"
定义多个变量时,建议使用第二种方式,以便在同一层中完成所有功能;
ARG
不同于 env在于, ENV是在docker run 时进行赋值,并传给容器中运行的进程的;
ARG是build过程中,传给docker build的命令,由build过程按需定制出不同的镜像的参数;
RUN
用于指定docker build过程中运行的程序,其可以是任何命令;
格式:
RUN
RUN ["
第一种格式中,
第二种格式中的参数是一个JSON格式的数组,其中
RUN ["/bin/bash", "-c", "executable", "param1"]
CMD
类似于RUN 指令,CMD指令也可用于运行任何命令或应用程序,不过二者的运行时间点不同
RUN指令运行于映像文件构建过程中,而CMD指令运行于Dockerfile构建出的新映像文件启动一个容器时
CMD指令的首要目的在于为启动的容器指定默认要运行的程序,且其运行结束后,容器也将终止;不过,CMD指定的命令其可以被 docker run的命令行选项所覆盖
在Dockerfile中可以存大多个CMD指令,但仅最后一个会生效;格式:
CMD
CMD ["
CMD ["
前两种格式的意义同RUN
第三种格式则用于为ENTRYPOINT指令提供默认参数
ENTRYPOINT
类似于CMD指令的功能 , 用于为容器指定默认运行程序, 从而使用得容器像是一个单独的可执行程序;
与CMD不同的是,由ENTRYPOINT启动的程序不会被docker run 命令指定的参数所覆盖,而且,这些命令行参数会被当作参数传递给ENTRYPOINT指令指定的程序
不过,docker run命令的--entrypoint选项的参数可覆盖ENTRYPOINT指令指定的程序
格式:
ENTRYPOINT
ENTRYPOINT ["
docker run 命令传入的命令参数会覆盖CMD指令的内容并且附加到ENTRYPOINT命令最后做为其参数使用
Dockerfile文件中也可以存在多个ENTRYPOINT指令,但仅有最后一个生效
USER
用于指定运行image时的或运行Dockerfile中任何RUN、CMD或ENTRYPOINT指令指定的程序时的用户名或UID
默认情况下,container的运行身份为root用户
格式:
USER
需要注意的是,
HEALTHCHECK
用于为容器进行健康状态检测
--interval=DURATION (default: 30s)
--timeout=DURATION(default: 30s)
--start-period=DURATION(default: 0s)
--retries=N(default: 3)
比如:
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f || exit 1
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~