博客
关于我
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/

    你可能感兴趣的文章
    PROFINET 模拟器使用教程
    查看>>
    Program type already present: android.support.v4.widget.EdgeEffectCompat
    查看>>
    PyTorch中文版官方教程来啦(附下载)
    查看>>
    Progress Kemp LoadMaster 远程命令执行漏洞复现(CVE-2024-1212)
    查看>>
    Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
    查看>>
    Project Euler 15 Lattice paths
    查看>>
    Project Euler 48 Self powers( 大数求余 )
    查看>>
    Project Euler Problem 12: Highly divisible triangular number
    查看>>
    ProjectEuler 2
    查看>>
    projection介绍及EPSG:4326和EPSG:3857的投射转换
    查看>>
    project打开文件时,显示无法识别此文件格式?
    查看>>
    Prometheus + Grafana on Kubernetes部署
    查看>>
    prometheus + grafana进行服务器资源监控
    查看>>
    Prometheus Alertmanager 告警配置详解
    查看>>
    Prometheus Grafana 展示平台
    查看>>
    Prometheus pushgateway使用详解
    查看>>
    Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
    查看>>
    Prometheus 云原生 - 基于 file_sd、http_sd 实现 Service Discovery
    查看>>
    Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用
    查看>>
    Prometheus 云原生 - 监控 Linux、MySQL、Redis、RabbitMQ、Docker、SpringBoot 3.x
    查看>>