在拉动泊坞窗图像时,它会将其下载到单独的部分(图层)中,我需要在实际下载之前获得图像所有必要图层的下载大小。
有什么办法吗?
可以只运行docker pull
命令并观察输出:
ffcacfbccecb: Downloading [+++++> ] 14.1 MB/30.13 MB
ffcdbdebabbe: Downloading [++> ] 1.1 MB/12.02 MB
因此其下载大小为“42.15”。
但是我已经启用了一些选项来逐个下载图层:
ffcacfbccecb: Downloading [+++++> ] 14.1 MB/30.13 MB
ffcdbdebabbe: Waiting
所以这个解决方案对我不起作用。
答案 0 :(得分:2)
不幸的是,Docker Hub API没有公开记录。但是你可以得到一个JWT用于API,然后调用列出标签来获得大小。下面是一个使用jq来解析字节大小的示例:
获取令牌的第一个身份验证:
export HUBUSER=andyshinn
export HUBPASS=mypass
export HUBTOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${HUBUSER}'", "password": "'${HUBPASS}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
现在,您可以查询标记API以过滤特定标记并获取大小。在此示例中,我们获取了官方库wordpress
图片并过滤掉了latest
代码:
curl -s -H "Authorization: JWT ${TOKEN}" "https://hub.docker.com/v2/repositories/library/wordpress/tags/?page_size=100" | jq -r '.results[] | select(.name == "latest") | .images[0].size'
你应该得到像169817871
这样的东西,它是整个图像的大小(以字节为单位)。这是来自https://gist.github.com/kizbitz/e59f95f7557b4bbb8bf2的信息的修改示例。
答案 1 :(得分:0)
然而@Andy提供的答案更像是程序员'选择和更好的方法来做到这一点。我通常使用另一种方式,我觉得更方便。
我经常使用在线实验室来测试Docker-image的大小和性能。我最喜欢的是play-with-docker,它提供了大约3个小时的终端会话,你可以自由地做任何事情。图像可以在那里轻松快速地下载。之后,我获得了关于图像所需的所有信息,无论是大小还是其他任何信息。我也可以通过使用它来查看该图像是否适合我的工作。
答案 2 :(得分:0)
@Andy的方法很完美。非常感谢!那确实帮助了我。
curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results[] | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i
用于其他注册表(如Microsoft Container Registry)上的图像。我想出了三种方法。
docker manifest inspect
观察清单数据,这可以使您了解如何获得图像的压缩大小。
docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | numfmt --to=iec-i
要启用docker manifest inspect
,请编辑~/.docker/config.json
文件并将experimental
设置为enable
。(参考:docker manifest inspect)
将图像推送到Docker Hub,您可以在Docker Hub网站上获取图像的压缩大小。
使用docker save
将图像保存到.tar文件,然后将其压缩为.tar.gz文件。
docker save my-image:latest > my-image.tar
# Compress the .tar file
gzip my-image.tar
# Check the size of the compressed image
ls -lh my-image.tar.gz
答案 3 :(得分:0)
您可以转到Docker Page,例如:MySQL Container Tags,如图中所示 strong text 希望它对您和其他人有帮助。