编写Dockerfile文件
编写规则
在构建新的镜像时如果采用docker build的方式是需要编写Dockerfile文件的,该文件定义了容器在创建时的行为(安装软件、执行命令、拷贝文件等)。docker会在build的时候执行相关操作,下面介绍Dockerfile的关键字和编写规则。
Dockerfile中的指令主要有以下几种,CMD、ENTRYPOINT、RUN、EXPOSE、FROM、ADD、COPY、VOLUME、WORKDIR、USER、ONBUILD、LABEL、STOPSIGNAL、ARG和ENV等操作。下面对这些命令逐个进行解释,最后我们在编写相关的示例文件来加深理解:
1.FROM
设置基础镜像的名称,可以采用“minhviet/centos-6.5”这种全称形式,minhviet为作者名称,centos-6.6为镜像名称。
eg:
FROM minhviet/centos-6.5
要点:
FROM必须是第一个非注释的命令;
2.MAINTAINER
设置创建该镜像的作者信息。
eg:
MAINTAINER zhang chi "********@qq.com"
3.CMD
CMD指令用于指定一个容器启动时需要运行的命令,这个和RUN指令有不同。RUN指令是指镜像被构建时需要运行的命令。CMD的执行可以通过exec的方式书写。
eg:
CMD["yum", "install", "vsftpd", "-y"]
要点:
1.在Dockerfile中只可以指定一个CMD命令。如果指定多个,也只有最后一个生效。
2.如果在容器启动命令run中指定了启动时的命令,则run中的指令会覆盖掉CMD的操作。
4.RUN
RUN指令是构建镜像时所需要执行的命令,他的书写方式也有两种:
(1)shell命令行形式;
RUN yum install httpd -y
(2)exec系统调用的形式。
RUN["yum", "install", "httpd", "-y"]
要点:
1.RUN的构建时在基础镜像之上按照由上到下的顺序,以层级的方式进行构建,这有些类似于git的版本控制,一旦某个RUN命令发生错误,docker将会停止构建,并且得到构建失败前最后一次正确