📜  docker 在 pull acr 之前获取图像大小 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:30:32.275000             🧑  作者: Mango

如何在 pull acr 之前获取图像大小

在使用 Docker 镜像时,我们可能需要获取镜像的大小信息,例如向 ACR 中 push 镜像时,需要确保镜像大小不超过 ACR 的限制。在 pull 镜像前获取镜像大小是一个好方法,可以帮助我们更好地管理镜像。

本文将介绍如何在使用 Docker 命令 docker pull 之前获取镜像大小。

使用 Docker 镜像管理命令 docker image

Docker 镜像管理命令 docker image 可以查询本地已有的镜像信息,通过执行以下命令可以获取本地镜像的 ID 及大小信息:

docker image inspect --format='{{.Id}} {{.Size}}' <image-name>

其中 <image-name> 为需要查询的镜像名称或 ID,执行的结果格式如下:

<镜像 ID> <镜像大小>

示例:

docker image inspect --format='{{.Id}} {{.Size}}' nginx:latest

执行结果:

sha256:84e6b355d279d82aab2e316210b3729ac0307a57c736aeb6d24dff3d3c2db3f6 133MB
使用 Docker Registry API

Docker Registry API 可以提供更为详细的镜像信息,包括镜像大小、层数、创建时间等,通过执行以下命令可以获取镜像详细信息:

curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET "https://<registry-url>/v2/<image-name>/manifests/<tag>" | jq '.config.digest, .config.size'

其中 <registry-url> 为 Registry URL,<image-name> 为镜像名称,<tag> 为镜像标签,执行的结果格式如下:

"<镜像 digest>",
"<镜像大小>"

需要注意的是,需要确保已安装 jq 命令行工具才能解析 JSON 格式的返回结果。

示例:

curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET "https://registry.hub.docker.com/v2/library/nginx/manifests/latest" | jq '.config.digest, .config.size'

执行结果:

"sha256:dd1f84482b12610e4d1d520fdb802de4eac4fd80405d7e98a8d01f7b1fa891c1",
132889028
结论

以上两种方式都可以用于获取 Docker 镜像的大小信息,第一种方式仅能提供本地镜像的信息,第二种方式通过与远程 Registry API 交互也可以获取远程镜像的信息。

建议在使用 Docker 镜像时,考虑将镜像大小作为参考因素进行管理。