Dockerfile 的详细指令剖析和说明

news/2025/2/11 9:36:34/文章来源:https://www.cnblogs.com/autopwn/p/18709153

以下是关于 Dockerfile 的详细指令剖析和说明,包括 FROMMAINTAINERRUNEXPOSE 以及 CMD 等指令的功能和使用方法:


1. FROM 指令

  • 作用
    • 指定构建镜像时所使用的基础镜像。
    • 每个 Dockerfile 必须以 FROM 开头。
  • 语法
    FROM <镜像名称>:<标签>
    
  • 说明
    • FROM 后面指定的镜像必须存在(本地或可以从远程仓库下载)。
    • 如果本地已经有该镜像,则直接使用。
  • 示例
    FROM centos
    
    表示以 CentOS 基础镜像为起点构建新的镜像。

2. LABEL maintainer 指令

  • 作用
    • 用于声明镜像的作者信息。
  • 语法
    LABEL maintainer <作者名> <联系方式>
    
  • 说明
    • 这个指令会向镜像中添加元信息,方便其他用户了解镜像的维护者。
  • 示例
    LABEL maintainer John Doe <john.doe@example.com>
    

3. RUN 指令

  • 作用
    • 在构建镜像时执行指定的命令。
    • 每个 RUN 指令都会创建一个新的镜像层。
  • 语法
    • 方式 1:Shell 格式(常用):
      RUN <命令>
      
    • 方式 2:Exec 格式
      RUN ["可执行文件", "参数1", "参数2"]
      
  • 说明
    • Shell 格式:直接使用 Shell 的方式运行命令,语法易读,适合简单命令。
      • 示例:
        RUN yum install -y wget
        RUN echo "Hello World"
        
    • Exec 格式:将命令封装为 JSON 数组,适合复杂命令,避免 Shell 的解析问题。
      • 示例:
        RUN ["/bin/bash", "-c", "echo Hello World"]
        
  • 示例
    RUN yum install -y nginx
    RUN echo "Installed NGINX"
    

4. EXPOSE 指令

  • 作用
    • 声明容器运行时会监听的端口。
    • 仅仅是声明作用,本身不会自动将容器端口映射到主机端口。
  • 语法
    EXPOSE <端口1> [<端口2> ...]
    
  • 说明
    • EXPOSE 的主要用途是让镜像使用者知道该服务会监听哪些端口。
    • 在运行容器时,可以通过 -P-p 参数将这些端口映射到主机端口。
  • 示例
    EXPOSE 80
    EXPOSE 8080 8443
    
    • 表示容器运行时会监听 80、8080 和 8443 端口。

5. CMD 指令

  • 作用
    • 定义容器启动时的默认命令(可被覆盖)。
  • 语法
    • 方式 1:Shell 格式
      CMD <命令>
      
    • 方式 2:Exec 格式
      CMD ["可执行文件", "参数1", "参数2"]
      
  • 说明
    • 每个 Dockerfile 只能有一个 CMD 指令,后面的会覆盖前面的。
    • 如果在 docker run 命令中指定了命令,会覆盖 CMD 定义的内容。
  • 示例
    CMD ["nginx", "-g", "daemon off;"]
    
    • 表示容器启动时运行 Nginx,并保持前台运行状态。

RUN 和 CMD 的区别

特性 RUN CMD
执行时机 构建镜像时执行 容器启动后执行
用途 安装软件、配置环境等 指定容器启动时运行的命令
影响 每个 RUN 指令会创建一个镜像层 CMD 不创建新镜像层,仅定义默认命令

指令组合示例

以下是一个完整的 Dockerfile 示例,包含了上述指令:

# 1. 基础镜像
FROM centos# 2. 维护者信息
LABEL maintainer John Doe <john.doe@example.com># 3. 配置环境并安装必要的软件
RUN rm -rf /etc/yum.repos.d/*
COPY CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache
RUN yum install -y wget nginx# 4. 拷贝静态文件到 Nginx 默认目录
COPY index.html /usr/share/nginx/html/# 5. 声明暴露的端口
EXPOSE 80# 6. 容器启动时运行 Nginx
CMD ["nginx", "-g", "daemon off;"]

总结指令的作用与要点

  1. FROM

    • 指定基础镜像。
    • 每个 Dockerfile 必须包含。
  2. LABEL maintainer

    • 声明作者信息(可选)。
  3. RUN

    • 在镜像构建过程中执行命令,通常用于安装软件或配置环境。
  4. EXPOSE

    • 声明容器监听的端口,方便用户了解。
  5. CMD

    • 定义容器启动时的默认命令,可被 docker run 参数覆盖。

通过这些指令,您可以灵活地构建自定义镜像,满足不同的应用场景需求。接下来我们可以进一步学习其他高级指令,例如 WORKDIRENVENTRYPOINT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/881974.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java安全中的类加载

java安全中的类加载本文所涉及的内容仅供参考与教育目的,旨在普及网络安全相关知识。其内容不代表任何机构、组织或个人的权威建议,亦不构成具体的操作指南或法律依据。作者及发布平台对因使用本文信息直接或间接引发的任何风险、损失或法律纠纷不承担责任。对应的代码我发在…

cvat nuclio serverless pip install安装失败

cvat nuclio serverless 安装自动标注插件失败./serverless/deploy_cpu.sh serverless/onnx/WongKinYiu/yolov7主要pip安装失败的原因是部分依赖包不能够在大陆下载 只需要将function.yaml内的脚本添加依赖加速即可-i https://pypi.tuna.tsinghua.edu.cn/simple

Qt写Word文档-Windows

电脑没有安装微软的office,安装的是wps,用的是 QAxObject,所以只支持Windows系统一、pro文件添加 axcontainer 二、实现代码#include <QAxObject> #include <QDebug> // 创建Word应用程序对象 QAxObject* word = new QAxObject("kwps.Application");…

绝了,一招解决DeepSeek 提示“服务器繁忙,请稍后再试” 卡顿问题!(保姆级教程)

大家好,我是狂师。 现在 AI 圈里讨论最多的话题就是:"国产之光DeepSeek了"。 但用过的人也知道,是真的卡。动不动就提示:“服务器繁忙,请稍后再试”用官方App或网页版,估计10条回复中至少有8条会卡爆。对于重度使用的我来讲,经常会被官网的卡顿搞得差点吐血。…

揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链

在上一篇文章中,我介绍了 Sdcb Chats 如何集成 DeepSeek-R1 模型,并利用其思维链(Chain of Thought, CoT)功能增强 AI 推理的透明度。DeepSeek-R1 强大的思维链能力给用户留下了深刻印象。本文将深入剖析 Sdcb Chats 实现这一功能的技术细节,重点介绍如何基于 OpenAI .NET…

全网最全的DeepSeek的使用指导资源,拿去用来操作其他的大模型也一样有用,你去找付费培训不如打赏我一毛

最近全网都在为火热的DeepSeek疯狂,不少商家培训都是出了付费培训,不少人都上当受骗。我就搜刮全网最全的使用,供大家使用,有使用文档,有提示词培训,有视频,应有尽有,现在我们就开始吧! 一、如何使用提示词 DeepSeek官网提供了很全面的提示词规则手册,包含了13个方向…

0帧起手将腾讯混元大模型集成到Spring AI的全过程解析

在前面,我们已经为大家铺垫了大量的知识点,并深入解析了Spring AI项目的相关内容。今天,我们将正式进入实战环节,从零开始,小雨将带领大家一步步完成将第三方大模型集成到Spring AI中的全过程。为了方便讲解,本次实战的示范将以腾讯的混元大模型为主,我们将逐步向你展示…

【5大误区】选择跨网文件安全交换系统的注意事项

网络隔离后,企业采用跨网文件安全交换系统可以显著提升工作效率、保障信息安全、满足合规要求、支持灵活工作模式以及增强市场竞争力。这些优势使得跨网文件交换系统成为现代企业不可或缺的工具。 一、选择跨网文件安全交换系统的常见误区 选择跨网文件安全交换系统时,企业和…

C# 深度学习:对抗生成网络(GAN)训练头像生成模型

通过生成对抗网络(GAN)训练和生成头像 目录通过生成对抗网络(GAN)训练和生成头像说明简介什么是 GAN什么是 DCGAN参数说明数据集处理权重初始化生成器判别器损失函数和优化器训练 说明 https://torch.whuanle.cn 电子书仓库:https://github.com/whuanle/cs_pytorch Maomi.Torc…

开源的 DeepSeek-R1「GitHub 热点速览」

春节假期回来,一睁眼全是王炸级的开源模型 DeepSeek-R1!GitHub 地址→github.com/deepseek-ai/DeepSeek-R1DeepSeek-R1 开源还不到一个月,Star 数就飙升至冲破天际的 70k。虽然目前仅开源了模型权重,但同时发布的技术论文详细地介绍了 DeepSeek-R1 所采用的训练技术,如模型…

C#/.NET/.NET Core优秀项目和框架2025年1月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附…

Palo Alto Cortex XSOAR 6.13 for Linux - 安全编排、自动化和响应 (SOAR) 平台

Palo Alto Cortex XSOAR 6.13 for Linux - 安全编排、自动化和响应 (SOAR) 平台Palo Alto Cortex XSOAR 6.13 for Linux - 安全编排、自动化和响应 (SOAR) 平台 Security Orchestration, Automation and Response (SOAR) platform 请访问原文链接:https://sysin.org/blog/cort…