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,它会覆盖父镜像的设置。
相关推荐
云上飞476369624 小时前
Windows WSL2 + Docker 环境下NVIDIA PhysicsNeMo 安装指南
windows·docker·physicsai·physicsnemo
抓不住时间的沙4 小时前
N1搭建Hexo个人博客,部署到Github
python·docker·node.js·debian·github·arm
2401_834636994 小时前
保姆级 K8s 运维:RBAC 认证 + Dashboard+Local/NFS 动态卷实战
运维·容器·kubernetes
wsad05325 小时前
CentOS 10 上使用 Docker Compose 部署 Discuz X5.0 论坛完整教程
linux·docker·centos·discuz
爱莉希雅&&&5 小时前
Kubernetes Service 完整学习笔记
笔记·学习·kubernetes
BTU_YC16 小时前
Docker Compose 部署 DozerDB 完整教程
运维·docker·容器
流烟默16 小时前
Kubernetes 调度器完全指南:从原理到生产实战
云原生·容器·kubernetes
spencer_tseng19 小时前
[kylin & linux] install docker
linux·docker·kylin
流烟默20 小时前
Kubernetes Service 完全指南:从原理到生产实战
云原生·容器·kubernetes
airobotcn20 小时前
智能巡检平台容器化部署:Docker+K8s在工业边缘的实践
人工智能·docker·容器·kubernetes·机器人·自动化