博客
关于我
docker概念:用Dockerfile生成Image
阅读量:792 次
发布时间:2019-03-24

本文共 1485 字,大约阅读时间需要 4 分钟。

Dockerfile入门指南

前言

Dockerfile是(特定技术领域中)开发和运行容器镜像的核心文件。如果你想要定制或共享一个镜像,没有这个文件是无法实现的。掌握Dockerfile的灵活运用,是每一个开发者必须具备的技能。

Docker镜像的基本理解

一、镜像结构

  • 基镜像:包含基本的系统环境和文件系统,镜像的起点。
  • 父镜像:存放你自定义的功能模块和应用程序。

二、路径分类 路径的划分与理解是Dockerfile写作的关键:

  • 当前工作目录
  • Dockerfile所在目录
  • 上下文构建路径
  • Dockerfile语法详解

    FROM与RUN语句解析

    FROM是镜像构建的起点,必须作为第一条指令。例如,若你要构建一个定制的Nginx镜像,需要指定一个基镜像。从这个语句可以看出,镜像是基于一个现有的镜像进行修改和扩展的。 示例:

    FROM nginx
    RUN echo "这是一个本地构建的Nginx镜像" > /usr/share/nginx/html/index.html

    RUN语句的两种格式

    • shell格式:直接执行OS命令。
      RUN command
    • exec格式:执行可执行文件。
      RUN ["executable", "arg1", "arg2"]

    COPY与ADD语句

    COPY和ADD用于将文件或目录复制到镜像中。

    • COPY命令复制主机上的文件。
      COPY hom* /mydir/
    • ADD命令处理压缩包。
      ADD harbor.tar.gz /myapp/

    CMD与ENTRYPOINT

  • CMD:执行容器启动时的默认命令。
    CMD ["executable", "param1", "param2"]
  • ENTRYPOINT:为容器指定运行的程序,优先级高于CMD。
    ENTRYPOINT ["nginx", "-c"]
  • 注意:Entries点可以接受命令行参数,而CMD则可以被覆盖。

    ENV与ARG指令

  • ENV:设置镜像内的环境变量,可用于后续指令。
  • ENV NODE_VERSION=7.2.0

    ginard Hermione taxed understand FILE gemian dosetas,是不是很押韵?

    1. ARG:为构建命令提供环境变量,如:
    2. ARG DOCKER_VERSION=18.03

      WORKDIR与USER

    3. WORKDIR:指定工作目录,镜像构建过程中每一层都可用。
    4. WORKDIR /opt/nginx/conf
      1. USER:指定执行命令的用户。
      2. USER root:nginx

        VOLUME与EXPOSE

        • VOLUME:参数定向匿名挂载卷。
          VOLUME ["/data"]
        • EXPOSE:声明端口。
          EXPOSE 80:443

        ###健康检查与ONBUILD

        • HEALTHCHECK:监控容器状态的命令。
          HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 --commandinterval=30s CMD curl -sSO localhost
        • ONBUILD:延迟执行构建指令。

        示例

        ONBUILD RUN touch /usr/share/nginx/html/index.html

        LABEL

        给镜像添加元数据。 示例:

        LABEL maintainer="runoob.com"

        后记

        这篇文章为技术人员编写,核心内容为Dockerfile学习指南。内容虚构,非真实信息。这篇文章已经过优化,适合技术社区阅读和分享。

    转载地址:http://wixkk.baihongyu.com/

    你可能感兴趣的文章
    PLC接线详解
    查看>>
    PLC数组的使用(西门子)
    查看>>
    Quarzt定时调度任务
    查看>>
    PLC结构体(西门子)
    查看>>
    PLC编程语言ST文本语法的常用数据类型及变量
    查看>>
    PLC通讯方式
    查看>>
    Please install 'webpack-cli' in addition to webpack itself to use the CLI
    查看>>
    Ploly Dash,更新一个Dash应用程序JJJA上的实时人物
    查看>>
    Ploly烛台的定制颜色
    查看>>
    Ploly:如何在Excel中嵌入完全交互的Ploly图形?
    查看>>
    plotloss记录
    查看>>
    Plotly (Python) 子图:填充构面和共享图例
    查看>>
    Plotly 中的行悬停文本
    查看>>
    Plotly 停用 x 轴排序
    查看>>
    Plotly 域变量解释(多图)
    查看>>
    Plotly 绘制表面 3D 未显示
    查看>>
    Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
    查看>>
    Plotly-Dash:如何过滤具有多个数据框列的仪表板?
    查看>>
    Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
    查看>>
    Plotly:如何从 x 轴删除空日期?
    查看>>