您可以使用python库API访问,管理和操作Docker对象,例如容器,图像,集群,群集等。您可以执行docker命令可以执行的几乎所有操作。当您使用django或flask之类的python应用程序并且要使用与该应用程序相同的python脚本维护docker容器时,这非常方便。
要为docker使用python库API,您需要安装一个名为docker-py的软件包。您可以使用以下pip命令执行此操作。如果您安装了python 2,请用pip替换pip3。
pip3 install docker−py
现在,我们将逐一介绍docker的python客户端库API的不同功能。
为了使用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或使用任何其他python脚本的GUI应用程序)构建应用程序时,这非常有用。如果您愿意从Docker容器管理应用程序,强烈建议您使用python脚本编写docker命令,而不要通过命令行界面单独执行命令。