#registry #docker #image #private #info #extract #local

aduana

一个简单的 crate,用于从本地 Docker 注册表中提取镜像信息

1 个不稳定版本

0.1.0 2021 年 11 月 22 日

#627Unix API

Apache-2.0

14KB
254

阿杜纳

crates.io build

一个非常简单的基于 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