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

    你可能感兴趣的文章
    Metasploit CGI网关接口渗透测试实战
    查看>>
    Metasploit Web服务器渗透测试实战
    查看>>
    MFC模态对话框和非模态对话框
    查看>>
    Moment.js常见用法总结
    查看>>
    MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
    查看>>
    mxGraph改变图形大小重置overlay位置
    查看>>
    MongoDB可视化客户端管理工具之NoSQLbooster4mongo
    查看>>
    Mongodb学习总结(1)——常用NoSql数据库比较
    查看>>
    MongoDB学习笔记(8)--索引及优化索引
    查看>>
    mongodb定时备份数据库
    查看>>
    mppt算法详解-ChatGPT4o作答
    查看>>
    mpvue的使用(一)必要的开发环境
    查看>>
    MQ 重复消费如何解决?
    查看>>
    mqtt broker服务端
    查看>>
    MQTT 保留消息
    查看>>
    MQTT 持久会话与 Clean Session 详解
    查看>>
    MQTT介绍及与其他协议的比较
    查看>>
    MQTT工作笔记0007---剩余长度
    查看>>
    MQTT工作笔记0008---服务质量
    查看>>
    MQTT工作笔记0009---订阅主题和订阅确认
    查看>>