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


Posted in Python onAugust 30, 2019

官方文档:【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接口的方法

以上这篇docker-py 用Python调用Docker接口的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中利用函数装饰器实现备忘功能
Mar 30 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
Python 自动化表单提交实例代码
Jun 08 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 Python
python如何为创建大量实例节省内存
Mar 20 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
详解Python发送email的三种方式
Oct 18 Python
python3中eval函数用法使用简介
Aug 02 Python
python 三元运算符使用解析
Sep 16 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 #Python
Django获取应用下的所有models的例子
Aug 30 #Python
Django自带日志 settings.py文件配置方法
Aug 30 #Python
tensorflow如何批量读取图片
Aug 29 #Python
解决Django layui {{}}冲突的问题
Aug 29 #Python
Python Django实现layui风格+django分页功能的例子
Aug 29 #Python
在Django下测试与调试REST API的方法详解
Aug 29 #Python
You might like
php查询相似度最高的字符串的方法
2015/03/12 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
js 编写规范
2010/03/03 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python ip正则式
2009/05/07 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python守护线程用法实例
2017/06/23 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
文员岗位职责
2013/11/09 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
网站美工岗位职责
2014/04/02 职场文书
环保倡议书500字
2014/05/15 职场文书
师范生自荐信模板
2014/05/28 职场文书
本科生求职信
2014/06/17 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
八年级数学教学反思
2016/02/17 职场文书