Docker提供了Remote API,能够经过REST接口进行Docker服务的控制,包括pull/push等全部操做,结果与本机的操做彻底同样。使用Docker Remote API能够经过脚本进行Docker集群的自动化控制。前端
加入Docker的启动选项:docker
DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375"
“-H=0.0.0.0:2375” 表示在任何IP的2375端口上监听,提供服务。json
这个选项的设置在Ubuntu上15.04版本后有一些不一样,主要是服务的启动方式变为了systemd。vim
修改/usr/lib/systemd/system/docker.service文件,使docker支持远程tcp接口和本地SOCK链接。安全
vim /usr/lib/systemd/system/docker.service
将ExecStart修改成:app
ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
按esc+:+wq保存,退出。负载均衡
从新载入systemd,扫描新的或有变更的单元:tcp
systemctl daemon-reload
重启docker服务加密
systemctl stop docker.service systemctl start docker.service
在Ubuntu环境下修改其配置文件 /etc/default/docker, 加入:url
DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0: 2375"
启动服务:
sudo service docker restart
首先安装Docker Remote API的Python客户端:
pip install docker-py
而后在docker的同一台机器,能够链接和查看docker的容器信息。
from docker import Client cli = Client(base_url='tcp://127.0.0.1:2375') print( len(cli.containers()) ) print(cli.containers())
cli = Client(base_url='unix://var/run/docker.sock')
能够在远程进行访问docker 服务:
from docker import Client cli = Client(base_url='tcp://192.168.199.120:2375') len(cli.containers())
经过上面的 cli = Client(base_url='tcp://192.168.199.120:2375')
能够执行全部的Docker命令行操做。
from docker import Client cli = Client(base_url='tcp://192.168.199.120:2375') print( len(cli.images()) ) # 打印出容器镜像的参数 for img in cli.images(): print(img['RepoTags'][0])
from docker import Client cli = Client(base_url='tcp://192.168.199.120:2375') print( len(cli.containers()) ) # 打印出容器的参数 for c in cli.containers(): print(c["Command"],'\t',c["Image"],'\t',c["Names"])
from docker import Client cli = Client(base_url='tcp://127.0.0.1:2375') for line in cli.pull('busybox', stream=True): print(json.dumps(json.loads(line), indent=4))
from docker import Client cli = Client(base_url='tcp://127.0.0.1:2375') response = [line for line in cli.push('yourname/app', stream=True)] response