ByteNoteByteNote
拉取没有显示速度的旗标
字

字节笔记本

2026年10月7日 · 约 3 分钟读完

拉取没有显示速度的旗标

API中转
¥120

用户要在拉取镜像时看到速度。第一段给了一个 Python 脚本。用户接着问有没有自带参数。参数被机器拒绝之后,才说到命令行没有速度这一项。

旗标被拒绝

建议的命令是 docker pull --progress=plain nginx。在那台机器上执行后,返回 unknown flag: --progress,并提示去看 pull 的帮助。进度旗标不是这条拉取命令接受的开关。对话把它解释成版本旧。报错正文是不认识这个旗标。后来补的 docker pull -v nginx 没有在对话里再跑一次,不能当成已经看到速度。

安静旗标会少输出,只留下镜像标识那一类结果。它不增加速度列。默认的拉取本身会打层的进度,仍然没有每秒多少字节。

用户追问的是速度。最后一版承认官方命令行没有直接显示下载速度的参数。替代是在另一个终端看网卡,而不是再给 pull 加旗标。

脚本还没算到速度就会失败

脚本要求先安装 docker 这个包,再用解释器运行,参数是镜像名。示例是 nginx:latest。参数个数不是一个就退出,并打印用法。

客户端写成了 from_client。这个库对外的构造是 from_env 这一类入口,没有对话里这个名字。脚本会在拉取之前就因属性不存在而停住。速度公式还没执行。

公式本身按层计算。流里有标识和 progress,并且明细里有 current,才更新。用这一次和上一次的字节差除以时间差,得到每秒字节,再换成 B 到 TB 的单位,除数是 1024。第一次没有上一次,文案是计算中。总数存在时,进度写成已下载斜杠总大小。打印用回车符盖住同一行。多个层会互相覆盖,屏幕上常只剩最后一层。

拉取不认识进度旗标

出错打印错误。键盘中断打印已取消下载。最后的 finally 无论成功、失败还是取消,都会再打印下载完成。取消之后仍看到下载完成,是这段收尾,不是下载真的结束了。

速度改看网卡

对话给的旁路是每秒看一次网卡计数,或用 iftop,或用 nethogs 看某个进程。安装用的是 apt-get。iftop 直接运行。nethogs 的示例网卡名叫 eth0。机器上没有这块网卡时,换成实际的名字。这些工具看的是机器的流量,不区分镜像的某一层。和拉取同时开第二个终端,才能把流量和这次拉取对上。

ifconfig 在有的系统上已经没有。对话写了这个名字。命令不存在时,不是速度被关掉,是工具不在。拉取旗标仍然不要加回去。

客户端构造名写错时还不会算速度

默认拉取会动进度条或层的哈希。那不是速度。脚本若修好构造函数,速度也只来自两次进度事件的差。事件很疏时,时间差小,数字会跳。对话没有做平滑。

镜像名 nginx 和 nginx:latest 都在对话里出现。旗标试验用的是不带标签的 nginx。脚本示例带 latest。两边都是同一个公开镜像名,没有别的仓库地址。

帮助提示让人看 pull 的帮助。帮助里没有速度旗标,就和最后一版的结论一致。不要从构建命令的进度旗标借到拉取上来。用户已经用拒绝信息证明拉取不收它。

回车符覆盖是显示问题。速度已经按层算了,只是前一层被后一层擦掉。要同时看每一层,不能只用回车符。对话没有改成换行。

单位换算在小于 1024 时停。刚好等于 1024 时会进到下一档。这是这段函数的比较写法。显示成 1024 B 还是 1 KB,以比较用的是小于为准。

相关文章

分享: