当前位置: 首页 > 编程笔记 >

Docker的Python库API

索寒
2023-03-14
本文向大家介绍Docker的Python库API,包括了Docker的Python库API的使用技巧和注意事项,需要的朋友参考一下

您可以使用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命令,而不要通过命令行界面单独执行命令。

 类似资料:
  • 今天我开始使用Docker。所以请耐心等待。我甚至不确定标题是否有意义。我刚刚使用Docker安装了Tensorflow并想运行一个脚本。但是,我得到了以下错误,说没有安装Matplotlib。 我使用以下命令安装Tensorflow 我现在如何将其他Python库(例如Matplotlib)添加到该图像中?

  • 主要内容:使用 python 镜像方法一、docker pull python:3.5 查找 Docker Hub 上的 Python 镜像: 可以通过 Sort by 查看其他版本的 python,默认是最新版本 python:latest。 此外,我们还可以用 docker search python 命令来查看可用版本: 这里我们拉取官方的镜像,标签为3.5 等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITOR

  • 主要内容:Docker Hub仓库(Repository)是集中存放镜像的地方。以下介绍一下 Docker Hub。当然不止 docker hub,只是远程的服务商不一样,操作都是一样的。 Docker Hub 目前 Docker 官方维护了一个公共仓库 Docker Hub。 大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。 注册 在 https://hub.docker.com 免费注册一个 Docke

  • 这节介绍镜像仓库的使用。目前 Docker 官方维护了一个公共仓库 Docker Hub,大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现: 1. 登入登出 如果没有账号,我们需要在 Docker Hub 上免费注册一个 Docker 账号。保存好账号密码,进入 Linux 环境,输入: docker login 然后输入账号密码登录。 使用 docker logout 可以登

  • 我正在尝试为Centos 7和python 2.7创建Dockerfile,我在Docker Hub找到了一个:https://hub.docker.com/r/centos/python-27-centos7但我没有看到任何关于如何使用此图像创建Dockerfile的教程——我只看到pull命令 其实我想添加一些依赖和python包 所以我的问题一般-如果我在DockerHub上找到了一些合适的

  • 问题内容: 有没有在python下运行XQuery的现有方法?(换句话说,不是自己开始构建解析器)。 我有很多旧的XQuery,我想移植到我们的新系统,或者我想移植框架而不是XQuery。 因此:是否有任何库允许我在python下运行XQuery? 问题答案: 有点 … 浏览XQuery的W3C实现列表,有: Zorba的Python绑定 Sedna是带有Python API的免费本地XML数据库