学习内容:
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串格式的返回内容