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,它会覆盖父镜像的设置。
相关推荐
名字还没想好☜5 分钟前
Docker buildx 多架构镜像实战:一次构建 amd64+arm64,告别 exec format error
运维·docker·eureka·架构·kubernetes
gs801401 小时前
告别 CI/CD 误伤与红条:Docker 镜像智能清理与优雅防冲突实战
ci/cd·docker·容器
wjcroom1 小时前
FileBrowser的docker运行了改变密码长度的做法
运维·docker·容器
DevOps老兵3 小时前
AI Infra实战05:用Helm在K8s中部署vLLM,从安装到压测全流程
人工智能·kubernetes·helm·vllm·大模型推理·ai infra
Asum1ta3 小时前
生产环境 Kubernetes 高可用集群部署实战:外部 etcd + Keepalived + HAProxy + 多 Master 架构
架构·kubernetes·etcd
dazhong20124 小时前
Docker 进阶篇(一) CentOS 7 离线升级 Docker 完整实战
docker·容器·centos
雾隐隐o5 小时前
Docker Compose 多容器编排实战
运维·docker·容器
IT大白鼠5 小时前
Kubernetes 核心资源ReplicaSet 控制器详解
云原生·容器·kubernetes
μθημα6 小时前
Kubernetes 微服务网络实践:Service 与 Ingress 从入门到灰度发布
网络·微服务·kubernetes
众人皆醒我独醉6 小时前
Kubernetes GPU 调度与管理的完整机制——从节点上架到 Pod 拿到 GPU
面试·kubernetes·gpu