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官方提供的鏈接方式:服務器
默認不支持遠程訪問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