当前位置: 首页 > news >正文

【图文并茂】dockerfile构建镜像add和copy的区别,cmd和ENTRYPOINT 区别

ADD vs COPY 核心区别

场景用什么示例
复制本地文件到镜像COPYCOPY app.py /app/
复制并自动解压 tar 包ADDADD rootfs.tar.gz /
从 URL 下载文件RUN curl(推荐)RUN curl -o /x.sh https://...

为什么推荐 COPY:ADD 行为不透明——传 tar 它解压,传普通文件它不解压,传目录它复制目录,传 URL 它下载但不解压。容易踩坑。官方明确建议默认用 COPY。

dockerfile

# 推荐 COPY package.json /app/ COPY ./src /app/src # 仅当需要解压时用 ADD ADD rootfs.tar.xz / # 远程文件用 RUN curl 更可控(能校验、能重试) RUN curl -fsSL https://example.com/app.tar.gz -o /tmp/app.tar.gz \ && tar xzf /tmp/app.tar.gz -C /app \ && rm /tmp/app.tar.gz

CMD vs ENTRYPOINT 核心区别

一句话:CMD 可被docker run参数覆盖,ENTRYPOINT 不会被覆盖(参数追加到它后面)

三种写法 + 实际效果:

dockerfile

# 情况1:只用 CMD CMD ["nginx", "-g", "daemon off;"] # docker run myimage → 执行 nginx -g "daemon off;" # docker run myimage bash → 执行 bash(CMD 被整体替换!) # 情况2:只用 ENTRYPOINT ENTRYPOINT ["nginx", "-g", "daemon off;"] # docker run myimage → 执行 nginx -g "daemon off;" # docker run myimage -v → 执行 nginx -g "daemon off;" -v(参数追加) # 情况3:ENTRYPOINT + CMD 配合(最佳实践) ENTRYPOINT ["nginx"] CMD ["-g", "daemon off;"] # docker run myimage → 执行 nginx -g "daemon off;"(用 CMD 默认参数) # docker run myimage -t → 执行 nginx -t(CMD 参数被替换,程序不变)

最佳实践ENTRYPOINT固定主程序,CMD提供默认参数。这样既保证容器一定跑你想跑的程序,又允许运行时灵活调整参数。

几个易踩的坑

  1. shell 格式 vs exec 格式CMD nginx -g "daemon off;"(shell 格式)会通过/bin/sh -c执行,收不到 SIGTERM 信号,容器停止会超时。生产环境用 exec 格式CMD ["nginx", "-g", "daemon off;"]

  2. ENTRYPOINT 用 shell 格式会忽略 CMDENTRYPOINT nginx这种写法会让 CMD 完全失效,因为 shell 格式会变成/bin/sh -c "nginx"

  3. 想覆盖 ENTRYPOINT:用--entrypoint参数,如docker run --entrypoint bash myimage

  4. 基础镜像有 ENTRYPOINT 你想替换:在子 Dockerfile 里重新写ENTRYPOINT,会覆盖父镜像的。

http://www.jsqmd.com/news/1238748/

相关文章:

  • 2026重庆房屋渗漏水检测公司口碑榜**推荐-正规防水补漏一站式维修:卫生间/厨房/阳台/屋顶/地下室/屋顶/天沟渗漏水精准测漏补漏上门 - 安佳防水
  • 层增强分类(LEC)技术原理与实现详解
  • 支持空簧与CDC的悬架HIL系统
  • 【重磅】万国泰州**售后网点地址客户服务热线(2026年7月最新) - 万国中国官方服务中心
  • d6数组+排序(部分)
  • ZFX山海证券:从信息透明度切入的清单对照
  • Unity 2D雨夜效果完整实现:粒子系统优化与性能调优
  • Unity穿山甲广告集成实战:5分钟搞定Banner、激励视频与插屏广告
  • RAG框架qwen3-14b在企业知识管理中的应用与优化
  • AI智能体3D可视化监控平台:从Three.js到WebSocket的架构与实现
  • 社会实践PPT模板推荐哪家?我帮你实测了这5个渠道
  • Beat做歌工具与Sample素材平台实测分享:先找伴奏再写歌的创作实操心得
  • 基于YOLO11的仪表盘指针位置检测:从数据集构建到模型训练实践
  • 2026内江门窗加盟店**:这5家实力领跑,加盟水有多深? - 家居装修资讯
  • 湿疹管理的三个黄金法则:清洁、保湿与精准用药
  • 企业级考试系统架构升级:微服务与弹性伸缩实践
  • C语言-数组
  • 使用CodeLLDB与VS Code统一调试C++和Rust项目
  • 萧邦大连**售后服务中心网点地址与客服热线2026年7月最新公示 - 萧邦中国官方服务中心
  • 嵌入式视频处理内存优化:DMM/TILER原理、配置与实战
  • Seedance3.0本地AI视频生成:从部署到批量生产的完整指南
  • 程序员转型大模型:技能迁移与职业发展指南
  • 神秘的文件 —— Bugku
  • RAG技术解析:从检索增强生成到金融领域实践
  • 2026内江门窗选购**:本地老厂与全国品牌实力对比 - 家居装修资讯
  • 鸿蒙 PC Markdown 编辑器跨应用分享权限验证
  • 揭秘Ising-Decoder-SurfaceCode-1-Accurate:量子纠错领域的突破性解码器
  • 影刀RPA 网络请求拦截:捕获Ajax数据的正确姿势
  • Linux服务器CPU飙高排查:kdevtmpfsi挖矿病毒清除与系统加固实战
  • 2026降AI率软件技术解析与应用指南