Docker镜像最后一层突增400+MB及双CMD问题排查
关于Docker镜像层的两个问题解答
1. 最后一条CMD命令为何增加400多MB体积?
首先要明确:CMD本身是镜像元数据指令,不会向镜像中添加任何文件,自然也不会占用存储空间。你看到的400MB体积,大概率是前面安装Python及相关依赖的操作产生的——OracleLinux 9 slim基础镜像本身体积很小,安装Python(包括其依赖库、系统依赖包)会占用几百MB空间。
如果你的Dockerfile里把安装命令和CMD写在了同一个RUN指令里,那这部分体积会被归到同一条记录下;另外,如果安装后没清理包管理器缓存(比如OracleLinux用dnf,没执行dnf clean all),也会额外增加镜像体积。
2. 为何会出现两条CMD命令?
docker history会显示镜像构建过程中所有层的指令,包括基础镜像里的CMD。但实际运行容器时,只会执行你在Dockerfile中最后设置的CMD——新的CMD会覆盖基础镜像的CMD,历史记录里的只是构建过程的痕迹,不会影响容器的实际启动命令。
内容的提问来源于stack exchange,提问作者Milica Nikolić
相关产品推荐
相关产品推荐

