Dockerfile构建镜像时引用的基础镜像层是否包含在最终镜像中?
Dockerfile FROM 基础镜像层归属问题解答
- 最终构建生成的镜像完整包含基础镜像的所有层,不会仅保留对远端镜像的引用。
- 本地构建阶段逻辑:
执行docker build时,Docker daemon会优先在本地缓存中匹配FROM指令指定的基础镜像,本地无对应镜像或指定了--pull参数时,才会从远端镜像仓库拉取对应版本的完整基础镜像到本地。 - 本地层共享是存储优化,不代表镜像仅存引用:
Docker本地存储会对所有镜像层做自动去重,多个基于同一基础镜像构建的镜像会共享同一份基础层文件,避免重复占用磁盘空间,这只是本地存储的优化策略,和镜像本身的结构无关。 - 镜像分发/导出时的行为:
当你使用docker push推送构建好的镜像到远端仓库,或是用docker save导出镜像为tar包时,产物会包含该镜像的所有依赖层,包括FROM引入的基础镜像层。其他节点拉取你推送的镜像时,不需要额外拉取原始基础镜像就可以直接运行。
补充:只有当你使用特殊的稀疏镜像格式(普通场景几乎不会用到)时才会出现层引用的情况,常规构建流程产出的都是包含完整依赖层的标准镜像。
内容的提问来源于stack exchange,提问作者Guerric P
相关产品推荐
相关产品推荐

