Dockerfile文件详解

  • FROM //指定基于哪个基础镜像

格式 FROM 或 FROM :
示例:

FROM centos
FROM centos:latest
  • MAINTAINER //指定作者信息

格式 MAINTAINER
示例:

MAINTAINER apeng [email protected]
  • RUN //镜像操作指令

格式 RUN 或 RUN ["executable","param1","param2"]
示例:

RUN yum install httpd
RUN ['/bin/bash',"-c","echo hello"]
  • CMD
    CMD ["executable","param1","param2"]
    CMD command param1 apram2
    CMD ["param1","param2"]
    示例:
CMD ["/bin/bash","/usr/local/nginx/sbin/nginx","-c","/usr/local/nginx/conf/nginx.conf"]
  • EXPOSE
    格式为 EXPOSE [...]
    示例:

    //指定要映射出去的端口
    // -P 自动分配端口
    // -p 指定具体的端口
    EXPOSE 22 80 9000
  • ENV

格式 ENV
示例:

ENV PATH /usr/local/mysql/bin:$PATH
  • ADD
    格式 add

    ADD 
  • COPY

格式同ADD
不支持url

  • ENTRYPOINT

容器启动时要执行的命令,它和CMD很像,也是有一条生效,如果写多个只有一条有效。和CMD不同是:
CMD是可以被docker run指令覆盖的,而ENTRYPOINT不能覆盖
如,容器名为 apeng
我们在Dockerfile中指定如下CMD
CMD ["/bin/echo","test"]
启动容器的命令是docker run -it apeng /bin/bash 什么都不输出
ENTRYPOINT不会覆盖,而且会比CMD或者docker run指定的命令要靠前执行
ENTRYPOINT ["echo","test"]
docker run -it apeng 123
则会输出 test 123,这相当于要执行命令echo test 123

  • VOLUME

格式 VOLUME ["/data"]
创建一个可以从本机或其他容器挂载的挂载点

  • USER

格式 USER daemon
指定运行容器的用户

  • WORKDIR

格式 WORKDIR /path/to/workdir
为后续的RUN、CMD、ENTRYPOINT指定工作目录