docker-py 用Python调用Docker接口的方法
本文介绍如何使用Python的docker-py模块调用Docker API。通过pip安装依赖后,可实例化Client对象,配置base_url、version等参数。文章列举了version、images、containers、info、start/stop及login等常用方法,并推荐利用ipython查看完整方法列表与文档,实现高效的Docker资源管理。
官方文档地址:【https://docker-py.readthedocs.io/en/stable/images.html】
Docker API与docker-py简介
Docker对外提供了用于管理内部资源的API接口。该接口通常以Socket文件形式存在(默认为/var/run/docker.sock),也可配置为TCP形式。过去,开发者需借助subprocess等系统交互模块来调用这些API,操作较为繁琐。docker-py模块将Docker API的调用逻辑进行了封装,使开发者能够更直接、便捷地通过Python进行API交互。
docker-py模块安装
安装该模块推荐使用pip工具:
执行命令pip install docker-py。值得注意的是,该模块依赖项较多,安装耗时可能超出预期,但完成后即可成功。在Python环境中执行import docker若无报错,即表示安装成功。
■简单使用
初始化Docker客户端实例
部分网络教程因版本差异可能无法直接运行,此处筛选出经过验证的有效代码。首先演示最基础的应用:实例化一个Docker API调用者对象。
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文件路径或对应的Docker TCP连接地址(例如tcp://127.0.0.1:2375)。此外,还可配置version参数以指定Docker版本,timeout参数设定连接超时时间,以及tls参数(设为True或False)来控制是否使用SSL证书。若需指定特定的TLS配置,可传递docker.tls.TLSConfig类的实例。
获取客户端实例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操作方法
其他用于读取当前Docker环境信息的方法包括:
client.images([name])用于获取镜像信息。name参数可以是镜像名称、名称的一部分或name:tag格式,返回完整的镜像信息;若不指定name,则返回所有镜像信息。
client.containers([name])用于获取容器信息,name参数可以是容器名称或ID等,返回相应的容器数据。
client.info()用于获取与docker info命令输出一致的环境信息。
client.start/stop(name)分别对应docker start和stop命令,用于启动或停止指定容器。
...
上述方法的输出均为标准JSON格式,便于嵌入到其他系统中进行处理。
client.login()可传入username、password、registry等实名参数,功能等同于docker login命令。
利用ipython辅助开发
此处不再赘述其他方法。正好借此机会演示ipython这一工具。安装yum install ipython(体积较大)后,输入ipython进入交互Shell。在实例化client后,输入client.并按Tab键进行补全,即可列出client实例所有可调用的方法和属性。
对于任意方法(如client.delete),在方法名后输入问号再按回车,即可查看该方法的详细说明和用法。这种交互式查询方式比查阅网络教程或官方文档更为高效便捷。
此处列出所有方法表格,因篇幅限制不再详细展开。

以上关于docker-py使用Python调用Docker接口的方法即为全部内容,希望能为大家提供参考,并感谢支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









