學習內容:
Docker客戶端和服務端的通訊方式:client和自定義程序
Docker客戶端和服務端的連接方式:socket
演示Docker客戶端和服務端之間用remote-api通訊:nc -U /var/run/docker.sock
1、Docker客戶端和服務端的連接方式
方式一:client 和 demaon
User <--> Docker客戶端 <--> Docker服務端(守護進程)
User發送命令給Docker客戶端,如:docker pull、docker run
Docker客戶端轉發命令給宿主機上的Docker守護進程
Docker守護進程接收執行命令,返回命令執行結果
Docker服務端(守護進程)負責管理宿主機上的各個容器。
方式二:自定義程序和 服務端
User <--> 自定義程序 <--> Docker服務端(守護進程)
自定義程序調用remote-api,remote-api是 rest風格的api
https://docks.docker.com/reference/api/docker_remote_api
2、Docker客戶端和守護進程通過Socket連接,可以遠程或本地連接
- Unix的端口,如:unix:///var/run/docker/sock(默認連接方式)
- tcp://host:prot
- fd://socketfd
在服務端,查看是否啟動了docker的守護進程
ps -ef | grep docker
root 1526 1 9 17:34 ? 00:00:99 /usr/bin/docker -d
docker version
3、通過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串格式的返回內容