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 生成不重复的随机数的代码
May 15 Python
python中stdout输出不缓存的设置方法
May 29 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
详解python之简单主机批量管理工具
Jan 27 Python
Python简单的制作图片验证码实例
May 31 Python
快速入门python学习笔记
Dec 06 Python
Django ORM 查询管理器源码解析
Aug 05 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
python -v 报错问题的解决方法
Sep 15 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
BBS(php & mysql)完整版(五)
2006/10/09 PHP
php5.2.0内存管理改进
2007/01/22 PHP
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
深入分析PHP设计模式
2020/06/15 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
jquery 插件开发方法小结
2009/10/23 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
python 生成图形验证码的方法示例
2018/11/11 Python
python url 参数修改方法
2018/12/26 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
python3对接mysql数据库实例详解
2019/04/30 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python with语句和过程抽取思想
2019/12/23 Python
利用Python计算KS的实例详解
2020/03/03 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
关于读书的演讲稿800字
2014/08/27 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
实习科室评语
2015/01/04 职场文书
技术员岗位职责范本
2015/04/11 职场文书
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers