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 Django模板的使用方法(图文)
Nov 04 Python
最基础的Python的socket编程入门教程
Apr 23 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
Python反射用法实例简析
Dec 22 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
python中virtualenvwrapper安装与使用
May 20 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
python之pexpect实现自动交互的例子
Jul 25 Python
使用python实现回文数的四种方法小结
Nov 24 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
python2和python3哪个使用率高
Jun 23 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
对vux点击事件的优化详解
2018/08/28 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
Python使用type动态创建类操作示例
2020/02/29 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
公司财务会计主管应聘求职信
2014/09/26 职场文书
初婚未育证明样本
2014/10/24 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
如何用Python搭建gRPC服务
2021/06/30 Python
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python