随着 Docker 使用的增加,用户希望从 shell 以外的编程语言调用 Docker。从 Python 使用 Docker 的一种流行方法是使用docker-py。这个库取得了巨大的成功,甚至docker-compose是用 Python 编写的,并利用了 docker-py。

docker-py 的目标不是复制 Docker 客户端(用 Golang 编写),而是与 Docker Engine HTTP API 对话。Docker 客户端极其复杂,很难用另一种语言复制。因此,Docker 客户端中的许多功能无法在 docker-py 中使用。有时用户有时会感到沮丧,因为 docker-py 的行为与 CLI 不完全一样。

今天,我们将介绍一个由来自 Docker 社区的 Gabriel de Marmiesse 构建的新项目:Python-on-whales。这个项目的目标是在 Docker CLI 和 Python 库之间建立一对一的映射。我们通过与 Docker CLI 通信而不是直接调用 Docker Engine HTTP API 来做到这一点。


(相关资料图)

如果需要调用Docker命令行,使用Python-on-whales。而如果需要直接调用Docker引擎,使用docker-py。

在这篇文章中,我们将了解一些在 docker-py 中不可用但在 Python-on-whales 中可用的功能:

1.使用 Docker buildx 构建

2.使用 docker stack 部署到 Swarm

3.使用 Compose 部署到本地引擎

首先下载 Python-on-whales

pip install python-on-whales

Docker Build
这里我们构建一个 Docker 镜像。Python-on-whales 默认使用 buildx 并实时为您提供输出。

使用 docker stack 部署到 Swarm

在这里,我们在本地 Swarm 上部署了一个简单的Swarmpit堆栈。你得到一个 Stack 对象,它有几个方法:remove(), services(), ps().

使用 Compose 部署到本地引擎

关键词: Docker whales