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统计文件行数示例分享
Feb 21 Python
Django查找网站项目根目录和对正则表达式的支持
Jul 15 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
python如何进行矩阵运算
Jun 05 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
基于keras中的回调函数用法说明
Jun 17 Python
Python3爬虫带上cookie的实例代码
Jul 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程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
javascript 函数使用说明
2010/04/07 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
js正则相关知识点专题
2018/05/10 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
通过python检测字符串的字母
2020/02/18 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
Python中zip函数如何使用
2020/06/04 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
创业女性典型材料
2014/05/02 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL