从Docker零基础到懂一点实践教程(五)

本文介绍了Docker的客户端和守护进程的CS模式,包括Docker守护进程的配置与操作,如查看状态、启动、停止和重启。详细讲述了通过socket的连接方式,以及如何修改配置实现远程访问。此外,还讨论了Docker守护进程的启动选项和客户端配置的修改,确保Docker客户端与守护进程的顺畅通信。
摘要由CSDN通过智能技术生成

Docker客户端和守护进程

Docker的CS模式

在Docker的实现机制中,有两个重要的概念,“Docker客户端”和“Docker守护进程”。“Docker守护进程”运行在宿主计算机上,在CS模式中充当Server的角色,它为“Docker客户端”提供服务,并且完成Docker中的各项任务。

sequenceDiagram
用户->>Docker客户端: 命令行指令
Docker客户端->>Docker守护进程: 执行指令
Docker守护进程->>Docker客户端: 执行结果
Docker客户端->>用户: 命令行输出

除了“Docker客户端”这个最主要的与“Docker守护进程”交互的方式外,Docker还提供了RESTful风格的“Remote API”,这就意味着我们可以通过编写程序,调用这些API来将自己的程序与Docker进行集成。“Remote API”在某些复杂的情况下,也支持“STDIN”、“STDOUT”以及“STRERR”的通讯机制进行交互。

sequenceDiagram
用户->>自定义程序: 程序输入
自定义程序->>Docker守护进程: Remote API
Docker守护进程->>自定义程序: 执行结果
自定义程序->>用户: 程序输出

Docker Remote API Reference:
https://docs.docker.com/engine/reference/api/docker_remote_api/

连接方式

“Docker客户端”和“Docker守护进程”是通过socket进行连接的,官方提供了三种进行连接的模式:
- unix:///var/run/docker.sock
- tcp://host:port
- fd://socketfd

其中,“unix”模式是默认提供的,我们来验证一下:

schen@scvmu01:~$ ps -ef | grep docker
root      1106     1  0 21:14 ?        00:00:04 /usr/bin/dockerd -H fd://
root      1224  1106  0 21:15 ?        00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc
schen     1603  1582  0 22:03 pts/0    00:00:00 grep --color=auto docker
schen@scvmu01:~$ 
schen@scvmu01:~$ docker version
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 05:33:38 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 05:33:38 2016
 OS/Arch:      linux/amd64
schen@scvmu01:~$ 
schen@scvmu01:~$ ls -l /var/run/docker.sock 
srw-rw---- 1 root docker 0 Sep  7 21:14 /var/run/docker.sock
schen@scvmu01:~$ 
schen@scvmu01:~$ nc -U /var/run/docker.sock
GET /info HTTP/1.0

HTTP/1.0 200 OK
Content-Type: application/json
Server: Docker/1.12.1 (linux)
Date: Thu, 17 Nov 2016 12:16:25 GMT
Content-Length: 1874

{
  "ID":"VVPW:WOIW:TCPI:YDUG:J67N:5DHU:WSWW:RMMN:64FK:KNHO:NPPH:ATSL","Containers":26,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":26,"Images":44,"Driver":"aufs","DriverStatus":[["Root Dir","/var/lib/docker/aufs"],["Backing Filesystem","extfs"],["Dirs","83"],["Dirperm1 Supported","true"]],"SystemStatus":null,"Plugins":{
  "Volume":["local"],"Network":["host","bridge","null","overlay"],"Authorization":null},"MemoryLimit":true,"SwapLimit":false,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":false,"NFd":14,"OomKillDisable":true,"NGoroutines":22,"SystemTime":"2016-11-17T20:16:25.663603424+08:00","ExecutionDriver":"","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-45-generic","OperatingSystem":"Ubuntu 16.04 LTS","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{
  "InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{
  "docker.io":{
  "Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":1,"MemTotal":512176128,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"scvmu01.shichen.org","Labels":null,"ExperimentalBuild":false,"ServerVersion":"1.12.1","ClusterStore":"","ClusterAdvertise":"","SecurityOptions":["apparmor","seccomp"],"Runtimes":{
  "runc":{
  "path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{
  "NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值