常用命令

  • 定义构建时需要的参数: ARG 常量=值
  • 定义镜像时的基础镜像: FROM``镜像名:tag
    ARG version=1.0.0
    FROM golang:${version}

image

共用镜像

  • 定义进行的标签: LABEL AUTHOR=zzq

  • 声明暴露的端口: EXPOSE

    • 给 dockerfile文件维护者提供信息,在容器启动的时候使用 -P 命令可以可宿主机的端口进行映射
    • 帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射
    • 在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口
      EXPOSE 8080
  • 定义环境变量: ENV 在运行的容器中会存在 ENV USERNAE=zzq

  • 容器启动时执行的命令: ENTRYPOINT

    • 注意存在多个命令时只有最后一个生效
      FROM nginx
      
      ENTRYPOINT ["nginx", "-c"] # 定参
      CMD ["/etc/nginx/nginx.conf"] # 变参 
  • 定义匿名数据卷,在启动容器时忘记挂载数据卷,会自动挂载到匿名卷: VOLUME

    • 避免重要的数据,因容器重启而丢失,这是非常致命的
    • 避免容器不断变大。
      VOLUME ["/root""/home"] 或者 VOLUME /root /home
  • 指定容器启动后使用的用户: USER

  • 指定工作目录:WORKDIR

    • WORKDIR设置 RUN、CMD、ENTRYPOIN
    • WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在,通过 WORKDIR 创建的目录才会一直存在
  • 延迟构建命令的执行: ONBUILD

    • 当基于此镜像构建新的镜像时执行的命令 ONBUILD RUN ["echo","hello"]
  • 给送给容器退出的信号: STOPSIGNAL

  • 容器健康检查: HEALTHCHECK

    • healthcheck none 禁止容器健康检查
    • healthcheck --interval=3 --timeout=1 --retries=1 curl --fail [http://localhost:8080/ping](http://localhost:8080/ping) || exit 1
  • 用于执行后面跟着的命令行命令:RUN

    • shell 格式

      RUN yum install httpd && yum install ftp
    • exec 格式

      RUN ["./test.php", "dev", "offline"] # 等价于 RUN ./test.php dev offline
  • 类似于 RUN 指令,用于运行程序: CMD

    • CMD 在docker run 时运行。
    • RUN 是在 docker build。
    • 注意 cmd 执行命令,dockerfile 中只有最后一个cmd命令生效,在启动容器时如果指定了命令,dockerfile中的cmd也会失效
  • 添加文件到容器指定目录: ADD

    • 文件可以是宿主机上下文目录中的、可以 url 的、也可以使压缩包 (会自动解压)
  • 拷贝宿主机上下文目录中的文件到容器中: COPY

    • 跟ADD类似,但不具备自动下载或解压的功能
  • 用于使用 Dockerfile 创建镜像: docker build

参考