Docker 的 Python 库 API
您可以使用 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 命令,而不是通过命令行界面单独执行命令。