Docker提供了一个用于与Docker守护进程交互的API(称为Docker Engine API),以及用于Go和Python的SDK。SDK允许您快速轻松地构建和扩展Docker应用程序和解决方案。如果Go或Python不适合您,您可以直接使用Docker Engine API。Docker Engine API是一个RESTful API,由HTTP客户端(如wget或curl)或HTTP库(它是大多数现代编程语言的一部分)访问。
1. 安装SDK
实验环境为 CentOS 7.4,go version go1.12.4 linux/amd64, python 2.7.5, docker 18.09.4
若使用GoSDK,运行以下命令获取客户端:
go get github.com/docker/docker/client
本文使用Python SDK:
pip install docker
Tips:
Docker守护程序和客户端不一定需要始终是相同的版本,如果守护程序比客户端更新,则客户端不知道守护程序中的新功能或已弃用的API端点,如果客户端比守护程序更新,则客户端可以请求守护程序不知道的API端点。添加新功能时会发布新版API。Docker API是向后兼容的,因此,除非需要利用新功能,否则无需更新使用API的代码。
远程访问API 配置
在/etc/systemd/system/目录下创建docker-tcp.socket 文件,并向文件中写入以下配置内容,让我们可以通过2375端口访问docker服务:
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service
[Install]
WantedBy=sockets.target
启用新的socket
systemctl enable docker-tcp.socket
systemctl stop docker
systemctl start docker-tcp.socket
systemctl start docker
输入命令测试配置:
docker-Htcp://127.0.0.1:2375ps
2. 使用python API操作docker
要与Docker守护程序通信,首先需要实例化客户端,最简单的方法是调用from_env() 函数,它可以通过实例化DockerClient类来手动配置
importdocker
client = docker.from_env()
from_env()
从环境变量中返回一个配置过的客户端,环境变量通常设置:
DOCKER_HOST: Docker 宿主机URL地址
DOCKER_TLS_VERIFY: 根据CA证书验证主机
DOCKER_CERT_PATH:连接到Docker主机时使用的TLS证书的目录的路径
参数:
version: 使用API版本 (str)
timeout: 默认调用API超时时间 (int)
ssl_version:有效ssl版本 (int)
assert_hostname:验证服务器的主机名(bool)
environment:读取环境变量 (dict)
credstore_env:调用凭证存储过程时覆盖环境变量(dict)
DockerClient:用于与Docker服务器通信的客户端。
importdocker
client = docker.DockerClient(base_url='unix://var/run/docker.sock')
创建容器
busybox:1.0’) > container = client.containers.create(‘
查看容器列表
True) containers = client.containers.lists(all=
使用API 拉取镜像
busybox:latest’) > image = client.images.pull(‘
推送镜像到仓库
for line in client.push('yourname/app', stream=True, decode=True):
print(line)
删除镜像
True, noprune=True) client.remove(image=‘busybox’, force=
查找镜像
> client.search(term=‘busybox’)