大兵是
一个想全能的运维

Dockerfile参数详解

    Dockerfile是为了快速构建docker images而设计的,但使用docker build的时候,系统会读取当前目录下的Dockerfile(D大写),然后执行并构建出一个镜像,和shell类似,但是比它简单的多。

    Dockerfile是由一行行命令语句组成,支持#注释,指令不区分大小写,但建议大写。

Dockerfile指令详解

FROM

格式:FROM <images> or <images>:<tag>
example:FROM centos
除了注释,Dockerfile的第一句必须是FROM,后面跟的是镜像,默认本地,否则会从仓库拉取。

MAINTAINER

格式:MAINTAINER <info>
example:MAINTAINER dabing 547684265@qq.com
维护者的信息。

RUN

格式:RUN <command>
example:RUN yum install -y hahaha && yum clean all
shell中的运行命令,小技巧:yum完成可以清空缓存,减少images包的大小。

CMD

格式1:CMD ["executable","param1","param2"]#运行一个可执行的文件并提供参数。
example:CMD ["/usr/bin/supervisord"]
格式2:CMD ["param1","param2"] #为ENTRYPOINT指定参数。
每个dockerfile只能有一条CMD命令,如果多条,执行最后的一条,是在docker容器启动的的时候执行的命令,如果在启动时指定,会替代CMD命令。

ENTRYPOINT

格式: ENTRYPOINT ["executable", "param1","param2"]
example:ENTRYPOINT ["/usr/bin/nginx"]
#和CMD类似都是配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖,同样,每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。
#但ENTRYPOINT没有CMD的可替换特性,也就是你启动容器的时候增加运行的命令不会覆盖ENTRYPOINT指定的命令。

user

格式:USER www
#指定运行容器时的用户名和密码。

EXPOSE

格式:EXPOSE prot ...
example:EXPOSE 80 9000
#设置容器的的端口,外部可使用-p指定映射,或者-P随机端口映射。

ENV

格式:ENV key=value
example:ENV JAVA_HOME=/usr/local/src/jdk
#设置环境变量。

ADD

格式:ADD <src> <dest>
example:ADD epel-release-latest-7.noarch.rpm /tmp/
#将当前目录的指定文件拷贝到容器的中,如果是可识别的压缩文件,docker会自动解压。

WORKDIR

格式:WORKDIR /path
example:WORKDIR /tools/
#相当于cd命令,多个是相对路径,避免混淆,建议使用绝对路径。

VOLUME

格式:VOLUME ["/data"]
example:VOLUME ["/data/lnp"]
#可以将本地的文件夹或者其他容器的文件挂载到此容器中。

打赏

未经允许不得转载: » Dockerfile参数详解

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)