15 个版本
0.2.3 | 2023 年 6 月 15 日 |
---|---|
0.2.2 | 2023 年 6 月 3 日 |
0.2.1 | 2023 年 2 月 26 日 |
0.1.3 | 2022 年 4 月 23 日 |
#191 在 测试 中
在 3 代码包 中使用
36KB
834 行
contain-rs
一个用于使用 Rust 操作 docker 和 podman 容器的工具。
有关使用方法,请参阅 文档
基本使用
use contain_rs::{Docker, Client, Handle, Container, Image};
use std::str::FromStr;
let podman = Docker::new();
let container = Container::from_image(Image::from_str("docker.io/library/nginx").unwrap());
let handle = podman.create(container);
handle.run();
handle.wait();
// when the handle gets out of scope the container is stopped and removed
客户端
客户端用于调度容器。目前有两种实现可供选择。其中一种与 docker 兼容,另一种使用 podman。
镜像
容器需要镜像才能运行。你可以这样创建镜像
use contain_rs::Image;
use std::str::FromStr;
let image = Image::from_str("docker.io/library/nginx");
assert!(image.is_ok());
let latest = Image::from_str("docker.io/library/nginx:latest");
assert!(latest.is_ok());
宏
Contain-rs 提供了一个 derive 宏,用于为 struct 实现 IntoContainer 特性。必须启用宏功能才能使用 derive 宏。
然后你可以这样创建容器
use contain_rs::*;
#[derive(ContainerImpl, Default)]
#[container(
image = "docker.io/library/nginx",
health_check_command = "curl https://127.0.0.1 || exit 1"
)]
struct Nginx {
#[contain_rs(port = 80)]
port: u32,
}
let client = Docker::default();
let nginx = client.create(Nginx{ port: 8080 });
nginx.run();
nginx.wait();
nginx.rm(); // stops and removes the container
// this would be done automatically when the container handle goes out of scope
依赖
~3–13MB
~140K SLoC