學習內容:linux
Docker客戶端和服務端的通信方式:client和自定義程序docker
Docker客戶端和服務端的鏈接方式:socketjson
演示Docker客戶端和服務端之間用remote-api通信:nc -U /var/run/docker.sockapi
一、Docker客戶端和服務端的鏈接方式app
方式一:client 和 demaonsocket
User <--> Docker客戶端 <--> Docker服務端(守護進程)tcp
User發送命令給Docker客戶端,如:docker pull、docker run學習
Docker客戶端轉發命令給宿主機上的Docker守護進程spa
Docker守護進程接收執行命令,返回命令執行結果unix
Docker服務端(守護進程)負責管理宿主機上的各個容器。
方式二:自定義程序和 服務端
User <--> 自定義程序 <--> Docker服務端(守護進程)
自定義程序調用remote-api,remote-api是 rest風格的api
https://docks.docker.com/reference/api/docker_remote_api
二、Docker客戶端和守護進程經過Socket鏈接,能夠遠程或本地鏈接
在服務端,查看是否啓動了docker的守護進程
ps -ef | grep docker
root 1526 1 9 17:34 ? 00:00:99 /usr/bin/docker -d
docker version
三、經過linux的nc命令演示remote-api的使用
其中,
-U 指明使用socket
/var/run/docker.sock 指明 socket 地址
info是個remote-pi
nc -U /var/run/docker.sock
GET /info HTTP/1.1
返回信息
HTTP/1.1 200 OK
Content-Type:application/json
Job-Name:info
Date:Tue,14 Apr 2015 09:38:28 GMT
Content-Length:765
JSON串格式的返回內容