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 分钟前
16、Docker swarm-3
运维·docker·容器
Freshman小白1 小时前
python算法打包为docker镜像(边缘端api服务)
python·算法·docker
麦兜*1 小时前
Spring Boot 应用 Docker 监控:Prometheus + Grafana 全方位监控
spring boot·后端·spring cloud·docker·prometheus
爱吃糖的小秦同学1 小时前
Docker爆红且安装非C盘处理方案
运维·docker·容器
!chen2 小时前
k8s-应用部署和组件及常用命令
云原生·容器·kubernetes
亿牛云爬虫专家3 小时前
用 Playwright + 容器化做分布式浏览器栈:调度、会话管理与资源回收
分布式·docker·容器·浏览器·爬虫代理·新闻网站·playwright
tnan25224 小时前
基于阿里云效实现cicd记录
阿里云·ci/cd·docker·容器·自动化
wearegogog1234 小时前
用docker搭建selenium grid分布式环境
分布式·selenium·docker
lijun_xiao20095 小时前
DevOps(devops/k8s/docker/Linux)学习笔记-4
docker·kubernetes·devops
寒秋丶5 小时前
Milvus:通过Docker安装Milvus向量数据库(一)
数据库·人工智能·docker·ai·ai编程·milvus·rag