Python Docker 库 API


您可以使用 Python 库 API 访问、管理和操作 Docker 对象,例如容器、镜像、集群、swarm 等。您可以执行 Docker 命令几乎可以执行的所有操作。当您使用 Django 或 Flask 等 Python 应用程序并希望使用与应用程序相同的 Python 脚本维护 Docker 容器时,这非常方便。

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

pip3 install docker−py

现在,我们将逐一查看 Python 客户端库 API for Docker 的不同功能。

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

#import client
from docker import client

#create a client object to connect to the daemon
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']

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

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 的 GUI 应用程序或任何其他 Python 脚本)构建应用程序时,这非常有用。如果您想从 Docker 容器管理应用程序,强烈建议使用 Python 脚本编写 Docker 命令,而不是通过命令行界面单独执行命令。

更新于:2020年10月27日

737 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告
© . All rights reserved.