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