首页 > 解决方案 > docker-compose 推送不正确的图像大小

问题描述

我已经用docker-compose push了很多年了,没有问题,直到今天。我被这个弄糊涂了。基本上,它看起来只是在推送我的 Dockerfile 中的本地更改,而不是基于我的 Dockerfile 和原始源图像的整个图像。

$ docker-compose build
...
...
Successfully tagged registry.gitlab.com/<path_obfuscated>:21.10.02

$ docker images
REPOSITORY                                                         TAG              IMAGE ID       CREATED          SIZE
...
registry.gitlab.com/<obfuscated-path--------------------------->   21.10.02         3c8d770f0649   23 minutes ago   1.2GB
...

所以你可以看到图像是1.2 GB。现在我运行:docker-compose push

它发生得非常快,当我查看注册表上的图像时,它只有388 MB,而不是预期的1.2 GB

有人知道为什么会这样吗?多年来我一直在使用相同的方法,这是我第一次遇到这个问题。

一些额外的位:

$ docker version
Client:
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d28e
 Built:             Wed Aug  4 21:24:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Wed Aug  4 21:26:30 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

$ docker-compose --version
docker-compose version 1.25.5, build unknown

标签: dockerdocker-compose

解决方案


根据Docker GitHub中的这个问题:

docker images显示未压缩的大小。在 docker push 期间,引擎在发送到注册表之前压缩(gzip)图像。Hub UI 中显示的大小是压缩后的大小,大致代表了新docker pull用户需要做的工作量。部署容器时,网络传输大小可能是更重要的数字。


推荐阅读