我在Docker Hub上提取了大约0.5 GB的Docker镜像。在我的Centos机器上拉它后,图像的大小变为1.6 GB。使用新名称推送图像在Docker集线器上显示2 GB。 如何在Docker集线器上获取相同大小的图像?
答案 0 :(得分:1)
在issue 14204中报告了类似的问题,对于Ubuntu上的docker 1.7.0 (默认情况下,CentOS可能没有最新版本的docker,所以first step would be to upgrade if possible)
要检查的问题是:
- 你是如何安装docker的?
- 您能否列出重现问题的步骤?
- 您可以发布sudo du -sh / var / lib / docker / *
的输出- 您正在使用devicemapper作为存储驱动程序,可以尝试使用aufs吗?
醇>
最后一点,described in this article,请检查/etc/default/docker
# Use DOCKER_OPTS to modify the daemon startup options.
DOCKER_OPTS="--storage-driver=devicemapper"
当OP Dragomir Adrian确认in the comments时,它是一个泊坞版本问题:升级到1.9.1有帮助。
答案 1 :(得分:1)
有多种方法可以实现此目标,具体取决于您要查询的存储库。
前两个适用于DockerHub,并返回相同大小的测试映像debian:stretch-20190204-slim
on DockerHub:
到目前为止,我还没有找到适用于quay.io和私有Repos的解决方案。
需要jq。
export DOCKER_CLI_EXPERIMENTAL=enabled
echo $(( ( $(docker manifest inspect -v docker.io/debian:stretch-20190204-slim \
| jq '.[] | select(.Descriptor.platform.architecture == "amd64").SchemaV2Manifest.layers[0].size') \
+ 500000) \
/ 1000 \
/ 1000)) MB
23 MB
如果您关心细节:
export DOCKER_CLI_EXPERIMENTAL=enabled
-docker manifest
仍被认为是实验性的(从18.06.1-ce起)。可以在~/.docker/config.json
中设为永久-请参见docker manifest | Docker Documentation docker manifest inspect -v docker.io/debian:stretch-20190204-slim
-从Docker中心查询详细清单jq '.[] | select(.Descriptor.platform.architecture == "amd64").SchemaV2Manifest.layers[0].size
-过滤所有层的压缩大小(字节)+ 500000
-四舍五入/1000
-分为KB / MB ➜ echo $(( ( $(reg manifest debian:stretch-20190204-slim | \
jq '.layers[].size' \
| paste -sd+ | bc) \
+ 500000) \
/ 1000 \
/ 1000)) MB
23 MB
如果您关心细节:
reg manifest debian:stretch-20190204-slim
-查询来自docker hub的清单jq '.layers[].size'
-过滤每层的压缩大小(字节)paste -sd+ | bc
-创建各个大小(字节)的总和+ 500000
-四舍五入/1000
-分为KB / MB reg
和docker manifest
在某些其他存储库中无法立即使用。
但是,curl
可能就足够了。 OTOH,这对于docker hub有点困难(因为we need a token)。
➜ echo $(( ( $(curl -s https://gcr.io/v2/distroless/java/manifests/11-debug | \
jq '.layers[].size' \
| paste -sd+ | bc) \
+ 500000) \
/ 1000 \
/ 1000)) MB
69 MB
其他注册表示例: