2 个版本
使用旧 Rust 2015
0.1.1 | 2018年6月22日 |
---|---|
0.1.0 | 2018年6月22日 |
#67 in #unix-socket
35KB
683 行
docker.rs
为 Rust 提供的 docker API 封装库。
开发
docker.rs 目前处于开发中,请按照以下说明开始。
- 安装 rustc 和 rust-toolchain。
- 克隆仓库。
- 转到
src/
并开始开发。
用法
docker_rs 提供了与 Docker API 交互的 Rust 接口。目前支持 docker API 的最新版本(1.37)。要开始,请确保 docker daemon 已启动。
- 目前仅提供容器 API 实现的支持。我将在不久的将来添加其他支持。
连接到 docker unix socket 接口。
let client = match DockerClient::new("unix:///var/run/docker.sock") {
Ok(a) => a,
Err(err) => {
println!("{}", err);
exit(1);
}
};
使用 DockerApiClient 继承的 API 方法。
// Get version info for docker
let info = client.get_version_info();
// Get all containers(running/stopped)
let all_containers = client.list_all_containers(None).unwrap();
// Get only running containers
let running_cont = client.list_running_containers(None).unwrap();
// Create a new container using an Image
let mut cmd: Vec<String> = Vec::new();
cmd.push("ls".to_string());
let res = client
.create_container_minimal("kk", "debian:jessie", cmd)
.unwrap();
// Inspect the info for a container.
let inspect_info = client
.inspect_container(
"f808ca866b5fa80f65d6cd0937c72049272ea4c5aa4453e2abdd08d5efb59d3d",
)
.unwrap();
// Get info regarding changes made to filesystem inside container
let inspect_info = client
.get_container_filesystem_changes(
"f808ca866b5fa80f65d6cd0937c72049272ea4c5aa4453e2abdd08d5efb59d3d",
)
.unwrap();
// Start a created container
let start_info = client.start_container("f808ca...").unwrap();
// Kill a container
let kill_info = client.kill_container("f808ca...").unwrap();
该库目前仅提供与 docker daemon 通信的 unix socket 接口支持,因此适用于大多数本地交互 docker daemon 的场景。要添加支持 HTTP 的 DockerClient 实现请参考 /src/client.rs 中的 unix socket 实现。
实现 DockerApiClient 所需的唯一方法是 request
,其中你向 docker API 发送请求并返回响应。一旦你有了这个,你就可以为你的客户端实现每个 API 辅助函数,例如 Containers
,它将使用此函数本身。
外部链接
许可证
该项目受 MIT 许可证 许可。
开发说明
- docker-rs 鼓励你使用 rustfmt 保持代码格式。
- 对于你添加到库中的任何功能,请根据 Rust 标准编写适当的文档。
依赖关系
~0.8–1.7MB
~36K SLoC