8 个版本
0.0.9 | 2023年11月11日 |
---|---|
0.0.8 | 2023年8月31日 |
0.0.7 | 2023年1月16日 |
0.0.6 | 2022年12月25日 |
0.0.4 | 2022年10月20日 |
#613 在 异步
用于 2 crates
255KB
5.5K SLoC
Docker Engine 客户端
连接到 Docker Engine 的客户端库,通常是本地实例在 /var/run/docker.sock
。该库可以拉取和标记镜像,创建和启动容器,获取它们的输出。
适用于构建需要服务器应用程序的自动化测试,例如使用 Postgres 数据库的 Rust 应用程序。测试可以使用此库创建、启动和使用容器化应用程序,测试完成后删除容器。
示例
你好,世界
拉取并运行著名的 hello-world
Docker 容器,等待其完成,并记录其输出。
BusyBox 文件列表
与 Hello World 类似,但运行文件列表命令,并记录文件列表。
镜像列表
获取 Docker Engine 中当前存储的所有镜像的列表,并列出具有名称(标签)的前十个镜像。
Nginx
拉取并运行 nginx
镜像,等待其启动,通过等待端口 80
在服务中,然后获取并显示 nginx 服务的内容。
测试中的示例
具有自定义网络的复杂多容器配置
- Docker-in-Docker (DIND)
- 从容器内提取创建的文件
- 使用 TLS 和 htpasswd 认证保护的安全私有仓库
- 私有仓库的推送和拉取
健康检查
添加一个失败的健康检查并获取其状态。
修剪未使用的卷
平台支持
Linux
该库在 Linux 上功能齐全。
Mac
Mac 支持是实验性的。没有禁用功能,但某些自动化测试被禁用。
在Mac上,Docker为容器创建的定制本地网络不容易从主机网络访问。因此,在实现解决方案之前,许多自动化测试都被禁用了。
Windows
Windows支持是实验性的。由于Docker Engine在Windows上不支持某些功能,因此一些功能被条件编译掉了。默认配置下,示例在Windows上无法正常工作。
此外,在Windows上,Docker Engine仅监听命名管道,必须重新配置以启用HTTP监听器。自动化测试在端口2375上启用了一个不安全的监听器。如果您在生产环境中启用HTTP,您将需要遵循Docker文档,以在端口2376上启用TLS安全的监听器。
此库支持连接到TLS安全的端点,包括使用自签名证书机构。
连接到HTTP端点
请参阅.github/workflows/ci.yml以获取示例。
重新配置和重新启动Docker Engine后,设置DOCKER_HOST
环境变量,并在您的代码中使用DockerEngineClient::new
。
或者,您可以使用DockerEngineClient::with_server("https://127.0.0.1:2375")
代替环境变量,这仍然需要重新配置Docker Engine。
使用TLS连接到HTTP端点
使用DockerEngineClient::with_tls_config("https://127.0.0.1:2376", tls_config)
连接,其中tls_config
是您使用用于TLS的自签名证书机构配置的native_tls::TlsConnector
实例。
如果您不辞劳苦创建了一个您的客户端已经信任的CA(例如企业CA或公共CA)签名的服务器TLS证书,您可以设置DOCKER_HOST
环境变量,并使用DockerEngineClient::new
,而无需显式设置任何TlsConnector
配置。
测试基础设施
依赖关系
~9–21MB
~330K SLoC