Docker API 入门指南

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

Docker API 入门指南

若使用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=2375BindIPv6Only=bothService=docker.service[Install]WantedBy=sockets.target

启用新的socket

systemctl enable docker-tcp.socketsystemctl stop dockersystemctl start docker-tcp.socketsystemctl start docker

输入命令测试配置:

docker-Htcp://127.0.0.1:2375ps

2. 使用python API操作docker

要与Docker守护程序通信,首先需要实例化客户端,最简单的方法是调用from_env() 函数,它可以通过实例化DockerClient类来手动配置

importdockerclient = 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服务器通信的客户端。

importdockerclient = docker.DockerClient(base_url='unix://var/run/docker.sock')

创建容器

>>> container = client.containers.create(‘busybox:1.0’)

查看容器列表

>>> containers = client.containers.lists(all=True)

使用API 拉取镜像

>>> image = client.images.pull(‘busybox:latest’)

推送镜像到仓库

>>> for line in client.push('yourname/app', stream=True, decode=True):    print(line)

删除镜像

>>> client.remove(image=‘busybox’, force=True, noprune=True)

查找镜像

>>> client.search(term=‘busybox’)
本文只列出部分Python Docker API,若想了解更多API操作,可参考:https://docker-py.readthedocs.io/en/stable/index.html