docker - 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
解决方案
根据Docker GitHub中的这个问题:
docker images
显示未压缩的大小。在 docker push 期间,引擎在发送到注册表之前压缩(gzip)图像。Hub UI 中显示的大小是压缩后的大小,大致代表了新docker pull
用户需要做的工作量。部署容器时,网络传输大小可能是更重要的数字。
推荐阅读
- java - 使用 Gradle 和 IntelIJ 时 Kotlin 中未解决的引用“java”
- android - ViewPager 中包含多个线程的片段
- android - 如果文本很长,如何获取水平滚动的一行的 EditText
- postgresql - 将毫秒转换为字符串日期 dd MMM YYYY 并在 LIKE 子句中使用它
- excel-formula - Sumproduct 嵌套在 countifs 中
- jquery - 如果条件dynamodb如何获取表的所有数据并应用
- sql - 使用 oracle sql 对两个数字求和
- ruby - 使用页面对象 gem 单击嵌套在 div 中的链接
- android - 如何在不同的项目中重用一个公共子模块?
- javascript - 清除包含空元素的数组