docker-py 用Python调用Docker接口的方法

作者:菲宇 时间:2023-04-07 03:15:46 

官方文档:【https://docker-py.readthedocs.io/en/stable/images.html】

众所周知,Docker向外界提供了一个API来管理其中的资源。这个API可以是socket文件形式的(一般也是默认的,在/var/run/docker.sock中),也可以是TCP形式的。以前想要通过编程的方法来调用这些API还是傻傻的用subprocess等和系统层面交互的模块来调用,而docker-py这个模块则是直接把DockerAPI的调用封装了进去,让我们可以更加贴合Docker地进行API调用。

安装还是用pip:

pip install docker-py,意外的,这个模块所需要的依赖特别多,等了比我预想更长的时间,装好了。在python中import docker,不报错就是装好了。

■简单使用

网上的部分教程和使用方法说明可能是因为版本不切合的原因,不奏效。从中筛选了一些奏效的代码。首先是一个最简单的应用,就是实例化出一个dockerapi调用者的实例:


import docker

client = docker.Client(base_url='unix:///var/run/docker.sock')

for component,version in client.version().iteritems():

print component,version

初始化实例的过程中用到了参数base_url,它可以指出一个socket文件或者响应的dockerTCP连接如tcp://127.0.0.1:2375这样子。除此之外,还有version参数可以指出docker的版本,timeout参数指出连接超时的时间,tls参数可以置True或False来指出当前连接是否需要用到SSL证书,另外也可以传递一个docker.tls.TLSConfig类的实例来实现指定的TLS配置。

得到的客户端实例client可以调用一些方法。比如version方法是将当前docker以及其所依赖的环境中各个组件的版本信息以一个字典的方式展现出来。上述在虚拟机中输出如下:


KernelVersion 3.10.0-693.5.2.el7.x86_64
PkgVersion docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
Os linux
BuildTime 2018-01-30T09:17:00.069703428+00:00
ApiVersion 1.24
Version 1.12.6
GitCommit 3e8e77d/1.12.6
Arch amd64
GoVersion go1.8.3

其他的读取当前docker环境中的一些方法如:

client.images([name])获取镜像信息,name可以是一个镜像的name,name的一部分,name:tag等多种形式,获取到完整的镜像信息。不指定name时返回所有镜像信息

client.containers([name])获取容器信息,name可以是容器的name, id等等,返回

client.info()docker info命令的那些输出

client.start/stop(name)相当于docker start和stop制定容器

...

上述几个方法的输出都是标准的JSON格式,可以很方便地被嵌入到其他的一些系统中

client.login()可以传入实名参数username, password, registry等,相当于docker login

这里还有很多方法可以说,正巧这回想正式用下ipython这个神器。yum install ipython之后(还挺大的。。),键入ipython就进入ipython的shell了。在实例化玩client之后,输入client.然后按tab键要求补全的话,就会显示出所有client实例可以调用的方法和属性。

对于一个方法比如client.delete,后面输入问号再按回车,就可以看到这个方法相关的一些说明和用法。比去网上查,看官方文档不知道高到哪里去了。

列个所有方法的表,偷懒不详写了。

docker-py 用Python调用Docker接口的方法

来源:https://blog.csdn.net/bbwangj/article/details/91898831

标签:docker-py,Python,Docker,接口
0
投稿

猜你喜欢

  • xml xpath基础语法

    2008-01-21 12:46:00
  • FrontPage2002简明教程二:文字与图像的处理

    2008-09-17 11:13:00
  • Python找出list中最常出现元素的方法

    2022-10-31 14:24:38
  • Python loguru日志库之高效输出控制台日志和日志记录

    2023-07-20 04:15:04
  • MySQL中的唯一性约束与NULL详解

    2024-01-13 10:24:10
  • 用python简单实现mysql数据同步到ElasticSearch的教程

    2024-01-15 14:40:39
  • Python读写txt文本文件的操作方法全解析

    2021-08-07 04:06:20
  • uniapp实现支付功能

    2023-08-21 13:53:47
  • python中gevent库的用法详情

    2022-10-17 11:14:43
  • 一个查看MSSQLServer数据库空间使用情况的存储过程 SpaceUsed

    2024-01-26 07:04:56
  • 如何使用Python 打印各种三角形

    2023-10-27 00:12:48
  • jQuery动态添加删除select项(实现代码)

    2024-04-22 12:59:04
  • Python实现的爬取小说爬虫功能示例

    2022-07-14 20:36:16
  • django序列化时使用外键的真实值操作

    2022-07-19 10:09:30
  • VS CODE 使用SVN插件的方法步骤

    2023-05-22 10:39:33
  • 在linux系统下安装python librtmp包的实现方法

    2021-05-08 21:13:50
  • python队列Queue的详解

    2022-10-09 16:56:21
  • Win 10下Anaconda虚拟环境的教程

    2022-09-18 16:42:06
  • 使用 XML 文件记录操作日志

    2008-09-05 17:13:00
  • vue实现消息无缝滚动效果

    2024-05-29 22:42:33
  • asp之家 网络编程 m.aspxhome.com