2 个版本

使用旧 Rust 2015

0.1.1 2018年6月22日
0.1.0 2018年6月22日

#67 in #unix-socket

MIT 许可证

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