17 个版本
0.6.0 | 2024年6月3日 |
---|---|
0.5.8 | 2024年1月24日 |
0.5.7 | 2023年9月27日 |
0.5.3 | 2023年5月1日 |
0.3.2 | 2021年11月30日 |
#278 in 图像
每月1,662次下载
用于 ostree-ext
28KB
465 行
Rust 绑定,用于访问 Go containers/image 堆栈
该crate包含一个Rust API,可以fork /usr/bin/skopeo
并通过自定义API与之通信。您可以使用它以流式方式检索容器镜像。
在撰写本文时,您需要skopeo 1.6.0或更高版本。
为什么?
首先,假设我们正在操作一个非Go代码库,但想要与容器镜像交互 - 我们不能直接包含Go containers/image库。
此版本的主要用途案例是像ostree-containers这样的东西,我们使用容器镜像来封装主机操作系统更新,但我们不希望涉及containers/image存储层。
我们从containers/image库中想要的,是支持像签名和离线镜像这样的功能。更多内容见下文。
先不考虑ostree的存在 - 假设你想要在一个容器镜像中封装一系列Debian/RPM等软件包以供基于软件包的操作系统使用。你可以使用此功能将包含这些软件包的层以流式方式导出并直接提取它们,而不是将所有内容序列化到容器存储磁盘位置,然后再复制出来并删除原始内容。
另一个理论用例可以是像krustlet这样的东西,它在容器中检索WebAssembly blob。在这里,我们同样不希望涉及containers/storage。
期望的 containers/image 功能
例如,存在像dkregistry-rs和oci-distribution这样的Rust库,以及其他语言的类似库。
然而,容器/image Go库有大量的附加基础设施,这将给复制带来维护负担
- 签名(
man containers-auth.json
) - 镜像/重命名(
man containers-registries.conf
) - 支持
~/.docker/config.json
进行认证以及/run
状态
API可能会更改。
依赖项
约10-22MB
约316K SLoC