下载docker图像的大小

时间:2017-06-29 20:14:56

标签: docker

在拉动泊坞窗图像时,它会将其下载到单独的部分(图层)中,我需要在实际下载之前获得图像所有必要图层的下载大小。

有什么办法吗?

可以只运行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 

所以这个解决方案对我不起作用。

4 个答案:

答案 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的方法很完美。非常感谢!那确实帮助了我。

  1. 参考他的回答,我使用以下命令获取Docker Hub上docker镜像主机的压缩大小:
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
  1. 用于其他注册表(如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 希望它对您和其他人有帮助。