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,它会覆盖父镜像的设置。
相关推荐
听风吟丶6 分钟前
云原生 APM 实战:Prometheus Operator+K8s 构建容器化微服务监控体系
云原生·kubernetes·prometheus
壹米饭9 分钟前
Kubernetes 节点 DNS 解析异常问题排查与解决方案
后端·kubernetes
cqsztech21 分钟前
如何打造一个非CDB的Oracle 19c docker 镜像
数据库·docker·oracle
victory04311 小时前
K8S etcd 数据存储路径迁移
容器·kubernetes·etcd
洛克大航海1 小时前
Ubuntu 安装 Docker
linux·docker·ubuntu24.04
ylmzfun1 小时前
从Borg到Kubernetes:云原生时代的容器编排利器
云原生·容器·kubernetes
分布式存储与RustFS1 小时前
云原生基石:实战RustFS on Kubernetes,构建高可用存储架构
算法·云原生·kubernetes·对象存储·高可用·企业存储·rustfs
哲Zheᗜe༘1 小时前
K8S-Service资源对象
云原生·容器·kubernetes
可可苏饼干1 小时前
Docker命令与知识点归纳
运维·学习·docker·容器
地球没有花2 小时前
gitlab cicd 部署阿里云k8s
阿里云·ci/cd·kubernetes·gitlab