1 个不稳定版本
0.1.0 | 2021 年 11 月 22 日 |
---|
#627 在 Unix API 中
14KB
254 行
阿杜纳
一个非常简单的基于 reqwest 的 crate,用于从私有 Docker 注册表中收集镜像信息。
这个 crate 提供了一个简单的接口,用于检索存储在私有注册表中的所有镜像,并根据需要检索每个镜像的详细信息。要使用它,请将以下内容添加到您的 Cargo.toml
[dependencies]
aduana = "0.1"
示例
use aduana::*;
#[tokio::main]
pub async fn main() -> Result<(), AduanaError> {
// Create an inspector instance pointing to your registry
let inspector = AduanaInspector::new("https://127.0.0.1:5000");
// Retrieve a list of images on the registry
let images = inspector.images().await?;
// Loop over the retrieved images
for image in images {
// For each tag of an image
for tag in image.tags() {
// Retrieve its details
let details = image.details(tag).await?;
println!("{:#?}", details);
}
}
Ok(())
}
开发与测试用的本地注册表
创建一个开发用的证书。我建议使用 mkcert。
为了测试,您可以按照以下方式运行一个本地 Docker 注册表
$ docker run -it --rm \
-p 5000:5000 \
-v "$(pwd)"/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \
registry:2
在另一个控制台中,按照以下方式拉取、重命名和推送一个镜像到您的本地测试注册表
$ docker pull alpine
$ docker tag alpine localhost:5000/alpine:latest
$ docker push localhost:5000/alpine:latest
有关更多信息,请参阅 Docker 文档。
待办事项
目前这个 crate 只适用于与包含有限集合镜像的小型本地注册表一起使用。它不实现任何过滤或分页来收集每个镜像的所有标签。请不要在您不拥有的非常大的仓库中使用它,否则会破坏它!
依赖项
~4–16MB
~237K SLoC