dockerfile指令详解

警告
本文最后更新于 2020-05-30 17:09,文中内容可能已过时。

dockerfile指令:

 

FROM:指定基础镜像

#语法示例
FROM centos
FROM centos:6.9

#不加tag标签,默认是latest

MAINTAINER:(可选)维护者信息

#语法示例
MAINTAINER my name is soulchild.

LABLE:(可选)标签、描述信息,可以写成多个LABLE,建议只写一个,可以使用\符号

#语法示例
LABEL version="1.1" \ 
    description="this is example"

RUN:构建镜像时执行的命令,每一个RUN都会生成一层镜像,可以使用&&和\来解决多层臃肿的问题。

#语法示例
RUN yum install -y openssh-server && \
    service sshd start && \
    echo '123456' | passwd root --stdin

ADD:将文件复制到镜像中,如果文件格式是tar包,会自动解压,还可以访问网络资源

#语法示例
ADD /root/test.tar.gz /opt/
ADD http://xxx.xxx.com/download/xx.zip /opt

COPY:将文件复制到镜像中

#语法示例
COPY /root/kod.conf   /etc/nginx/conf.d/kod.conf

ENV:设置环境变量

#语法示例
#1.一次只能设置一个
ENV a 123
#2.一次可以设置多个,支持\换行
ENV b=456 c=789

#运行容器时需要指定-e参数

WORKDIR:切换工作目录,相当于cd

#语法示例
WORKDIR /opt

EXPOSE:端口映射

#语法示例
EXPOSE 80 443
EXPOSE 22/tcp  23/udp

#需要在容器运行时指定-P参数,才会将宿主机随机端口映射到容器发布的端口

VOLUME:设置卷,挂载目录

#语法示例
VOLUME /usr/share/nginx/html

#启动容器时会自动生成一个卷,可以通过docker volume [command],查看卷的详细信息

CMD:容器启动后的初始命令,此参数只能出现一次。如果在运行容器时指定运行命令了,此参数无效,会被替换掉。

#格式:
CMD ["命令","参数1","参数2"]

#语法示例
CMD ["/usr/sbin/sshd","-D"]

ENTRYPOINT:启动容器时如果手动指定了一个命令,会被追加到最后当作参数而执行,

#格式:
ENTRYPOINT ["命令","参数1","参数2"]

#语法示例
ENTRYPOINT ["/bin/bash","init.sh"]

#容器运行
docker run -d entrypoint:test hello
实际上运行的初始命令是/bin/bash init.sh hello

 

 

 

 

请我喝杯水
SoulChild 微信号 微信号
SoulChild 微信打赏 微信打赏
0%