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中Collection的使用小技巧
Aug 18 Python
python安装教程
Feb 28 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
Python通过cv2读取多个USB摄像头
Aug 28 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
Python 保存加载mat格式文件的示例代码
Aug 04 Python
Python切片列表字符串如何实现切换
Aug 06 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 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 Class 文章
2007/04/04 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
微信小程序实现换肤功能
2018/03/14 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
js实现转动骰子模型
2019/10/24 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
Python的Django框架使用入门指引
2015/04/15 Python
python查询mysql,返回json的实例
2018/03/26 Python
python实现log日志的示例代码
2018/04/28 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
final, finally, finalize的区别
2012/03/01 面试题
会计专业自我鉴定范文
2013/10/06 职场文书
领导干部考察材料
2014/02/08 职场文书
团支部推优材料
2014/05/21 职场文书
节水口号标语
2014/06/19 职场文书
社团活动总结报告
2014/06/27 职场文书
上课说话检讨书500字
2014/11/01 职场文书
佛光寺导游词
2015/02/10 职场文书
培训感想范文
2015/08/07 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
nginx之queue的具体使用
2022/06/28 Servers