Dockerfile 构建继承父镜像的 ENTRYPOINT 和 CMD

在 Docker 中,Dockerfile 是否继承其父映像的 ENTRYPOINTCMD,取决于 Dockerfile 的编写方式。以下是规则:

1. CMD****的继承

  • 子镜像会继承父映像的 CMD,但如果在子镜像的 Dockerfile 中显式定义了新的 CMD,就会覆盖父映像的 CMD
  • 如果子镜像未指定 CMD,则会保留父映像的 CMD

2. ENTRYPOINT****的继承

  • 子镜像也会继承父映像的 ENTRYPOINT,但如果在子镜像的 Dockerfile 中显式定义了新的 ENTRYPOINT,则会覆盖父映像的 ENTRYPOINT 和 CMD
  • 如果子镜像未定义 ENTRYPOINT,父映像的 ENTRYPOINT 会保留。

3. ENTRYPOINT****和 CMD****的关系

  • 如果两个都定义,CMD 的作用是为 ENTRYPOINT 提供默认参数。
  • 如果覆盖了 ENTRYPOINT,父映像的 CMD 可能失去作用,除非新的 ENTRYPOINT 设计为支持这些参数。

这个行为在 kubernetes 的 yaml 中覆盖容器命令同样适用

此外 WORKDIR 命令也是遵守这个规则:

Dockerfile中的WORKDIR指令在子镜像中也是会继承父镜像的。如果在父镜像中已经设置了WORKDIR,那么在子镜像中,你不需要再显式地设置WORKDIR,它将自动继承父镜像的工作目录。

然而,如果在子镜像中你重新设置了WORKDIR,那么新的设置会覆盖父镜像的WORKDIR指令。

简而言之:

  1. 继承 :如果子镜像没有显式设置WORKDIR,它会继承父镜像的工作目录。
  2. 覆盖 :如果子镜像中使用了WORKDIR,它会覆盖父镜像的设置。
相关推荐
云原生指北42 分钟前
Apple Container Machine:把 Linux 搬进 Mac
macos·docker
蘋天纬地2 小时前
k8s的控制平面是什么,有什么作用
容器·kubernetes
无级程序员4 小时前
clklog地域分析中的地名中英文对照问题解决
kubernetes
隐层漫游者5 小时前
2026全网最细Docker容器化实战!从安装配置到Milvus向量数据库部署,一文掌握核心精髓(建议收藏)
docker
加加and减减7 小时前
Docker真实安装mysql8教程并优化配置
运维·mysql·docker·容器
半夜燃烧的香烟8 小时前
docker 安装minio nginx,配置nginx根据文根路由minio展示图片
java·nginx·docker
qiuziqiqi9 小时前
ocker-compose.yml 和Dockerfile 区别
运维·docker·容器
杰克逊的日记9 小时前
如何在不影响业务的情况下对K8S集群升级
云原生·容器·kubernetes
“码”力全开9 小时前
【架构深探】基于Docker与GB28181/RTSP的边缘计算AI视频管理平台:异构算力调度与源码交付实践
人工智能·docker·架构
逻极9 小时前
Kubernetes 从入门到精通:云原生容器编排
kubernetes·k8s·服务发现·容器编排