8.經過Python鏈接Docker進行編程

Docker其實有兩個重要的概念:"Docker客戶端"和"Docker守護進程" Docker服務端提供了一系列REST API (Docker Remote API),當咱們敲docker命令時其實是經過API和Docker服務端進行交互的。

咱們能夠本身編寫Docker客戶端,調用REST API 和Docker服務端進行交互。docker

Docker官方提供了Python和Go的SDK,固然咱們能夠本身用熟悉的語言調用REST API的方式。編程

官方文檔地址:centos

https://docs.docker.com/devel...安全

Docker官方提供的鏈接方式:服務器

  • unix:///var/run/docker/sock
  • tcp://host:port
  • fd://docketfd

默認不支持遠程訪問tcp

配置遠程訪問工具

vi /usr/lib/system/docker.service

// 把本來是下面這一行註釋掉
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

// 添加以下這一行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock

// 而後保存後,重啓Docker
systemctl daemon-reload
systemctl restart docker

// 重啓以後查看一下docker的守護進程,確認是否配置成功
ps -ef | grep docker
netstat -anput | grep docker

// 開啓遠程訪問端口
iptables -I INPUT -p tcp --dport 2375 -j ACCEPT       // 確保防火牆放行2375端口

// 阿里雲的ECS上部署的Docker,還需在安全組規則添加入方向、tcp、2375端口的開通

// 使用本地測試鏈接

經過Python鏈接Docker測試測試

# 經過pip安裝docker sdk
pip install docker

import docker

# 須要修改對應的Docker服務器IP地址
client = docker.DockerClient(base_url='tcp://Docker服務器的IP:2375')

# 獲取全部鏡像列表,至關於docker cli方式執行 docker images
images = client.images.list()

print(images)        # 打印結果: [<Image: 'centos:httpd'>, <Image: 'centos:latest'>]

# 獲取鏡像id
print(images[0].id)    # 打印結果:sha256:3ac6dda7648810e447c94fb9f919f6c2cfa97410935e60894ef94ea6e5e4d2d3

# 這裏發現鏡像id比直接使用docker cli方式執行 docker images獲取的鏡像id長,

# docker裏面的各類鏡像id、容器id都只要能肯定惟一性就好了

這裏只是經過本身寫的程序鏈接Docker進行編程的一個實例,能夠幫助咱們理解Docker的管理工具的工做原理。阿里雲

文章出處:http://www.mi360.cn/articles/12url

相關文章
相關標籤/搜索