如何将之前的Docker镜像的大小拉到自己的机器上?
答案 0 :(得分:4)
在Docker中搜索docker镜像时,会有2个制表符 - Repo Info
和Tags
。打开“标签”选项卡,您将看到可以为该图像提取的所有图像类型的大小。
答案 1 :(得分:2)
获取图像特定标签的压缩大小(以字节为单位)。
# for an official image the namespace is called library
curl -s https://hub.docker.com/v2/repositories/library/alpine/tags | \
jq '.results[] | select(.name=="latest") | .full_size'
# 2796860
# here the project namespace is used
curl -s https://hub.docker.com/v2/repositories/jupyter/base-notebook/tags | \
jq '.results[] | select(.name=="latest") | .full_size'
# 187647701
获取特定体系结构/操作系统的图像标签的压缩大小(以字节为单位)。
# selecting an architecture
curl -s https://hub.docker.com/v2/repositories/library/alpine/tags | \
jq '.results[] | select(.name=="latest") | .images[] | select (.architecture=="amd64") | .size'
# 2796860
# selecting an architecture and a specific os
curl -s https://hub.docker.com/v2/repositories/library/hello-world/tags | \
jq '.results[] | select(.name=="latest") | .images[] | select (.architecture=="amd64" and .os=="linux") | .size'
# 2529
另一种方法是使用实验性docker manifest inspect
命令。优点是它不依赖Docker Hub,它与其他注册表一样工作,因为它基于Image Manifest specification。
# activate experimental mode
export DOCKER_CLI_EXPERIMENTAL=enabled
docker manifest inspect -v alpine:latest | \
jq '.[] | select(.Descriptor.platform.architecture=="amd64") | .SchemaV2Manifest.layers[].size'
# 2796860
# need to sum if multiple layers
docker manifest inspect jupyter/base-notebook:latest | \
jq '[.layers[].size] | add'
# 187647701
答案 2 :(得分:1)
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镜像有很多层,因此总图像大小取决于图像使用的层数。
的Century Link Labs来自Docker注册表中可视化图像及其图层(包括总大小)的好工具Github:imagelayers-graph
答案 4 :(得分:0)
如果您真的查看了停靠操作的docker代码,我认为您的答案就在那里。如果没有缓存容器的图像,那么在拉动图像期间,docker首先从注册表中收集有关图像的信息,如层数,每层的大小等等。
我会参考阅读此文件。
https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go