Docker实战(三)--Dockerfile构建带nginx的centos镜像,并挂载

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:仅仅只是声明端口

原文地址:https://www.cnblogs.com/shadow-yin/p/14152021.html