docker - 如何在 docker pull 之前从不安全的注册表中检查图像的压缩大小?
问题描述
有一些方法可以在从 Docker Hub 拉取之前检查压缩图像的大小,但是为了对不安全/域注册表做同样的事情,我如何在拉取之前检查下载大小?
拉动时,我可以看到像这样下载的每一层的大小,我可以总结一下总大小。
7595c8c21622: Already exists
d13af8ca898f: Already exists
70799171ddba: Already exists
b6c12202c5ef: Already exists
ef50ae158fa8: Downloading [===============> ] 74.18MB/239.3MB
e5665f29b73a: Downloading [=> ] 95.26MB/2.741GB
780c121f1da3: Downloading [========> ] 75.27MB/462.5MB
5fc49bebd483: Waiting
592ff9f385a7: Waiting
80a3934684b4: Waiting
b523362dbfaa: Waiting
3bf96686ba27: Waiting
dd64f3b98c5f: Waiting
937238fb3569: Waiting
c39efc826c40: Waiting
但我想事先知道总下载大小是多少。
解决方案
Docker 为注册表中的每个映像推送一个清单文件,其中包含所有下载客户端使用的校验和、大小和其他信息,以拉取层。
给定您的注册表/图像名称,您可以inspect
在清单文件中总结每个层的大小以获得总下载大小。
首先,启用 Docker 的实验性 CLI 功能。
临时启用:
export DOCKER_CLI_EXPERIMENTAL=enabled
使其永久化:
加入
"experimental": "enabled"
_~/.docker/config.json
检查尺寸:
docker manifest inspect --insecure -v <registry_or_domain>/<image_name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | xargs printf "%f\n" | numfmt --to=iec
printf
将大小的科学记数法(如 3e+09)格式化为numfmt
可以解析的浮点数。
推荐阅读
- assembly - _SFR_IO8(0x04) 在做什么?AVR
- spring - Spring - 将外部实体设置为属性
- boot - Android 在启动过程中挂起并出现致命异常 WifiStateMachine 和 JavaBinder
- algorithm - 给定无向连接图的两个节点之间的最短路径数
- javascript - Nativescript Textfield 文本和提示属性未在 IOS 中显示
- java - 在 Travis CI 中进行原生镜像编译的 GraalVM
- java - 单击按钮时如何更改布局的背景图像
- javascript - AJAX成功内的动态appendChild
- javascript - 单击后使用 JavaScript 打开一个新的(空)选项卡并添加 URL
- node.js - 从 NodeJs 获取数据到 ReactJs