Docker 的 Python 库 API

dockeroperating systemopen sourcepython

您可以使用 Python 库 API 访问、管理和操作 Docker 对象,例如容器、图像、集群、群集等。您可以执行 Docker 命令允许您执行的几乎所有操作。当您使用 Python 应用程序(例如 django 或 flask)并且想要使用与应用程序相同的 Python 脚本来维护 Docker 容器时,这非常方便。

要使用 Docker 的 Python 库 API,您需要安装一个名为 docker_minus;py 的包。您可以使用以下 pip 命令执行此操作。如果您安装了 python 2,请将 pip3 替换为 pip。

pip3 install docker−py

现在,我们将逐一介绍 docker 的 python 客户端库 API 的不同功能。

为了使用 API 在 python 脚本中运行 docker 命令,您首先需要连接到 docker 守护进程。您可以使用以下命令执行此操作 −

#导入客户端
from docker import client

#创建一个客户端对象来连接到守护进程
myClient = client.Client(base_url='unix://var/run/docker.sock')

连接到 docker 守护进程后,您可以使用以下命令获取所有容器的列表。请注意,在运行任何命令之前,您都以 root 用户身份登录,以避免权限错误。

myClient.containers()

它将为您提供本地计算机中存在的所有容器的列表,以及它们的 ID、关联图像和图像 ID、标签、端口、状态等。

要创建新容器,您可以使用客户端对象的 create_container 方法。

myContainer=myClient.create_container(image='ubuntu:latest',command='/bin/bash')

使用上述命令,您可以从 ubuntu 图像创建一个容器,并提供打开 bash 的命令或您想要的任何其他命令。

您可以通过打印来检查容器是否已创建使用以下命令来检查容器的 Id −

print(myContainer['Id'])

要检查特定容器,您可以在客户端对象上使用 inspect_container 方法。

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')

您需要提供要检查的容器的容器 Id 作为参数。您还可以仅检查特定字段,例如路径、名称或创建日期。

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Name']

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Created']

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Path']

要提交容器,您可以在容器对象上使用提交方法。您还可以为容器提供标签。

myClient.commit('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5', tag='container1')
The above command will return the Id of the container. In order to restart a container, you need to make sure the container still exists. To avoid this, what we can do is to wrap the command inside a try−catch block.
try:
myClient.restart('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')
except Exception as e:
print(e)

要获取所有图像的列表,您可以在客户端对象上使用 images 方法。

images = myClient.images()

它将返回所有图像的列表。要打印第一幅图像的详细信息,请使用 −

print(images[0])

要检查图像 −

myClient.inspect_image('9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b')

您需要提供图像 ID 作为参数。

现在我们将看到一些用于处理卷的有用命令。要获取所有卷的列表,您可以在客户端对象上使用 volumes 方法。

volumes = myClient.volumes()

它将返回所有卷的列表。要打印第一个卷的详细信息,您可以使用 −

print(volumes['Volumes'][0])

为了创建卷,您需要指定卷名称、驱动程序名称,还可以指定其他选项。

volume=myClient.create_volume(name='myVolume1', driver='local', driver_opts={})

要检查卷是否已创建,请尝试打印它。

print(volume)

要检查卷,请在客户端对象上使用 inspect_volume 方法。

myClient.inspect_volume('myVolume1')

要创建一个装载了卷的容器,您可以使用以下示例 −

mounted_container = myClient.create_container(
   'ubuntu', 'ls', volumes=['/var/lib/docker/volumes/myVolume1'],
   host_config=myClient.create_host_config(binds=[
  '/var/lib/docker/volumes/myVolume1:/usr/src/app/myVolume1'
  , ])
)

上述命令从 ubuntu 镜像创建一个容器,并将入口点指定为 ls,并将位于本地计算机中 /var/lib/docker/volumes/myVolume1 的卷挂载到 docker 容器中的 /usr/src/app/myVolume1。

总之,在本文中,我们讨论了如何使用 python 脚本创建、检查和管理 docker 对象(例如 docker 容器、镜像、卷)。当您使用 python 工具构建应用程序时,这非常有用,例如使用 django 或 flask 的 Web 应用程序或使用 tkinter 或使用任何其他 python 脚本的 GUI 应用程序。如果您愿意从 docker 容器管理应用程序,强烈建议使用 python 脚本编写 docker 命令,而不是通过命令行界面单独执行命令。


相关文章