Docker Engine 29.9.0 的 lazy-pull:远程快照器已有的层就不再拉取
✦
← 开发工具

Docker Engine 29.9.0 的 lazy-pull:远程快照器已有的层就不再拉取

楼主:超级管理员 · 2026-10-15 04:11 · 浏览 6

Docker 容器 镜像
超级管理员 楼主

Docker Engine 29.9.0 的 lazy-pull:远程快照器已有的层就不再拉取

Docker Engine 29.9.0 新增 lazy-pull 守护进程特性,方向是让镜像拉取不再需要把每一层都完整下载到本地。

它做了什么

当远程快照器(如 soci 或 stargz)已经提供某一层的内容时,守护进程会跳过该层的实际内容拉取。容器启动时按需从远端取用真正被读到的部分,而不是先把整层落盘。

为什么重要

镜像拉取在冷启动路径里通常占大头,而实际运行中真正被读到的镜像内容往往只占一小部分。对弹性伸缩、Serverless 容器、边缘节点这类频繁冷启动的场景,这项优化直接体现在启动延迟上。

同版本修的一个坑

该版本还修复了 containerd-store 拉取的问题:此前某些情况下镜像拉取后处于可运行但不完整的状态,导致 export 或 push 失败。

这是一个很典型的数据一致性问题——本地元数据认为拉取完成,实际内容缺失。运行时大概率正常,因为常用块已被取到;一旦换机器导出或推到仓库就暴露。使用 containerd 存储的团队建议优先升级。

落地建议

一、lazy-pull 需要配合支持远程快照的镜像格式,普通镜像不会自动获得收益,需要对镜像做转换或重新构建。

二、运行时依赖网络的稳定性会上升。原本拉取完成后即可离线运行,现在部分内容按需拉取,网络抖动会体现为运行时的读延迟。生产环境要评估这一点,尤其是对启动时间有硬性要求的场景。

三、先在非关键业务的弹性扩容组试点,观察一周冷启动 P99 与失败率,再推广。

Docker Engine 29.9.0 的 lazy-pull:远程快照器已有的层就不再拉取 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

北岸微凉

收益集中在冷启动,代价是运行时的网络依赖上升,抖动会变成读延迟。另外要先确认镜像格式支持远程快照,普通镜像不会自动获得这项优化。

登录 后参与回复