资源占用对比
| 对比维度 | skopeo | crane |
|---|
| 设计理念 | 轻量级,无守护进程,直接操作 registry API | 轻量级,但主要面向开发者工具链 |
| 内存占用 | 极低,采用流式处理和分块传输,避免一次性加载整个镜像 | 中等,作为 Go 单二进制文件表现尚可 |
| CPU 占用 | 低,采用增量处理和连接复用 | 中等 |
| 存储占用 | MB 级(仅二进制文件本身) | MB 级 |
| 依赖 | 无守护进程依赖,无需 Docker/Podman 服务 | 无守护进程依赖 |
为什么 skopeo 更省资源?
- 真正的“零本地存储”操作:
skopeo inspect 可以直接读取远程镜像的元数据,完全不下载镜像内容到本地。而 crane 的某些操作可能会在本地产生更多中间文件。 - 流式处理机制:在处理大型镜像时,skopeo 采用分块传输和增量处理,避免将整个镜像加载到内存中。实测表明,优化后的 skopeo 相比传统方法可节省 30-50% 的内存使用。
- 连接复用:skopeo 通过保持 HTTP 连接复用,减少了连接建立和断开的开销。
安装 skopeo
# Ubuntu/Debian
sudo apt install skopeo
# CentOS/RHEL/Fedora
sudo dnf install skopeo
# 验证
skopeo --version
例子
查看所有可用标签(不拉取镜像)
skopeo list-tags docker://ghcr.io/sagernet/sing-box
查看 latest 标签的元数据(不拉取镜像)
skopeo inspect docker://ghcr.io/sagernet/sing-box:latest