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,它会覆盖父镜像的设置。
相关推荐
qq_31683775几秒前
使用 certbot docker镜像生成阿里云域名ssl证书
阿里云·docker·ssl
木雷坞6 分钟前
使用Docker Compose部署PostgreSQL:从入门到实践
docker·postgresql·容器
Tummer836328 分钟前
从 Docker 到 Kubernetes:容器编排的工程化实践指南
docker·容器·kubernetes
曹天骄1 小时前
在 Docker 容器中控制宿主机 Docker:DoD 与 DinD 的技术原理解析
docker·容器·eureka
萝卜特福1 小时前
Spring Boot 项目 Docker 部署全流程实操笔记
docker
认真的薛薛1 小时前
13.k8s中Prometheus监控集群及其服务,endpoint暴露服务,es采集k8s日志
elasticsearch·kubernetes·prometheus
国思RDIF框架2 小时前
Docker Compose多后端+多前端部署:日志集中管理实操指南(基础版+进阶版,亲测可用)
docker·容器·自动化运维
what丶k2 小时前
Docker 进阶指南:从入门能用,到生产环境稳、快、安全的核心实践与底层原理
后端·docker·容器
Bruce_Liuxiaowei2 小时前
在 macOS 上通过 Docker 本地安装 OpenClaw 完整教程
macos·docker·容器·openclaw
果壳~3 小时前
Docker镜像离线迁移:从下载到本地部署完整实战指南
运维·docker·容器