在拉取 Docker 映像时,它会在单独的部分(层)中下载它。在实际下载之前,我需要获取图像所有必要层的下载大小。
有没有办法做到这一点?
可以只运行docker pull命令并观察输出:
ffcacfbccecb: Downloading [+++++> ] 14.1 MB/30.13 MB
ffcdbdebabbe: Downloading [++> ] 1.1 MB/12.02 MB
Run Code Online (Sandbox Code Playgroud)
所以它的下载大小是“42.15”。
但是,我启用了一些选项来一层一层地下载图层:
ffcacfbccecb: Downloading [+++++> ] 14.1 MB/30.13 MB
ffcdbdebabbe: Waiting
Run Code Online (Sandbox Code Playgroud)
所以这个解决方案对我不起作用。
不幸的是,Docker Hub API 没有公开记录。但是您可以获取用于 API 的 JWT,然后进行调用以列出标签以获取大小。下面是一个使用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)
Run Code Online (Sandbox Code Playgroud)
现在,您可以查询标签 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'
Run Code Online (Sandbox Code Playgroud)
您应该返回类似169817871整个图像大小(以字节为单位)的信息。这是根据https://gist.github.com/kizbitz/e59f95f7557b4bbb8bf2中的信息修改的示例。
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |