docker-compose push推送镜像大小异常,远小于本地构建镜像大小
故障原因排查及解决方法
1. 容器镜像仓库层去重导致的显示偏差(概率最高)
- 包括GitLab Container Registry在内的所有主流容器 registry 都会全局去重相同哈希值的镜像层,仓库页面展示的镜像大小仅为当前镜像独有的新增层总大小,并非完整镜像解压后的总大小。
- 你本地构建的1.2GB镜像包含了所有基础镜像层+自定义变更层,若基础镜像层此前已经推送过当前仓库,
docker-compose push只会上传本地独有的变更层,所以推送速度极快,仓库页显示的388MB就是这些新增层的总大小。 - 验证方法:找一台未缓存该镜像的干净机器,执行
docker pull registry.gitlab.com/<path_obfuscated>:21.10.02,拉取完成后执行docker images查看镜像大小,若和本地的1.2GB一致且容器可以正常启动运行,则属于正常情况,无需处理。
2. docker-compose配置的镜像标签不匹配
- 检查
docker-compose.yml中的image字段配置,若配置的标签和你构建生成的21.10.02不一致,docker-compose push会推送配置中指定标签的镜像,而非你刚构建的21.10.02版本镜像。 - 验证方法:执行
docker-compose config | grep image,确认输出的镜像地址和标签与你构建成功的目标镜像完全一致。
3. 低版本docker-compose的已知bug
- 你使用的docker-compose 1.25.5属于2020年发布的老旧版本,存在多个和镜像推送逻辑相关的已知问题,例如多阶段构建场景下会误判自定义层已存在、漏推送部分层。
- 解决方法:升级docker-compose到v2最新稳定版,重新执行构建、推送命令验证即可。
内容的提问来源于stack exchange,提问作者Andre
相关产品推荐
相关产品推荐

