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使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
python中 chr unichr ord函数的实例详解
Aug 06 Python
微信跳一跳辅助python代码实现
Jan 05 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
python树莓派红外反射传感器
Jan 21 Python
python ---lambda匿名函数介绍
Mar 13 Python
django自带调试服务器的使用详解
Aug 29 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
Keras 快速解决OOM超内存的问题
Jun 11 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 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将HTML转换成文本的实现代码
2015/01/21 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
图片之间的切换
2006/06/26 Javascript
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
python语言的优势是什么
2020/06/17 Python
学习Python需要哪些工具
2020/09/04 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
理工大学毕业生自荐信范文
2014/02/22 职场文书
2014年妇联工作总结
2014/11/21 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
用python画城市轮播地图
2021/05/28 Python
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
Apache POI的基本使用详解
2021/11/07 Servers
Python3的进程和线程你了解吗
2022/03/16 Python
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js