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

    你可能感兴趣的文章
    Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
    查看>>
    Mysql学习总结(6)——MySql之ALTER命令用法详细解读
    查看>>
    Mysql学习总结(70)——MySQL 优化实施方案
    查看>>
    Mysql学习总结(71)——MySQL 重复记录查询与删除总结
    查看>>
    Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
    查看>>
    Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
    查看>>
    Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
    查看>>
    Mysql学习总结(74)——慢SQL!压垮团队的最后一根稻草!
    查看>>
    Mysql学习总结(75)——并发量大、数据量大的互联网业务数据库设计军规
    查看>>
    Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
    查看>>
    Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
    查看>>
    Mysql学习总结(78)——MySQL各版本差异整理
    查看>>
    Mysql学习总结(79)——MySQL常用函数总结
    查看>>
    Mysql学习总结(7)——MySql索引原理与使用大全
    查看>>
    Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
    查看>>
    Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
    查看>>
    Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
    查看>>
    Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
    查看>>
    Mysql学习总结(84)—— Mysql的主从复制延迟问题总结
    查看>>
    Mysql学习总结(85)——开发人员最应该明白的数据库设计原则
    查看>>