1.什么是dockerfile
个人理解Dockerfile其实应该叫 image file,因为Dockerfile 其实是一个用来构建镜像的文本文件
FROM centos MAINTAINER zengyin<zengyin@qq.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools RUN yum -y install nginx VOLUME /etc/nginx/ EXPOSE 80 CMD echo $MYPATH CMD echo "....end...." CMD /bin/bash
以上文件其实是以centos为基础镜像,安装vim、nginx、net-tools,并将nginx以mounts的方式映射到本地随机生成的路径,暴露80端口
2.常用指令
-
FROM:定制的镜像都是基于 FROM 的镜像,上面后续的操作都是基于 centos。
-
MAINTAINER:作者(维护者)
-
WORKDIR:指定进入容器后的默认路径
-
RUN:用于安装软件包
-
COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径
-
ADD:ADD 指令和 COPY 的使用格式一致,会自动复制并解压(同样需求下,官方推荐使用 COPY)
-
CMD:用于运行程序,容器启动后,默认执行的命令。“默认”意味着:如果docker run 没有指定任何的执行命令或者dockerfile中也没有ENTRYPOINT时,执行
-
ENTRYPOINT:正式的容器启动后的执行体。即:如果docker run后有东西,那么后面的全部会被作为ENTRYPOINT的参数;如果run后面没有,但CMD后面有,那么CMD的内容会作为ENTRYPOINT的参数;如果要在docker run时覆盖ENTRYPOINT,使用--entrypoint即可
-
ENV:设置环境变量,那么在后续的指令中,就可以使用这个环境变量
-
ARG:构建参数,与 ENV 作用一至。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效
-
VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
-
EXPOSE:仅仅只是声明端口