Docker客户端和守护进程

时间:2024-05-21 21:24:20

Docker客户端和守护进程

Docker的C/S模式

Docker客户端和守护进程

Docker的守护进程运行在宿主机上(即Server端),使用者通过Docker的客户端命令行接口向Docker服务器发送命令,经过处理后将结果返回给客户端。

客户端使用Remote API向服务端发送命令

Docker的 C/S连接方式

Docker使用socket进行客户端和服务端的连接,提供了三种进行socket连接的模式

  1. unix:///var/run/docker.sock Unix端口,默认的连接方式

  2. tcp://host:port

  3. fd://socketfd

docker的客户端与服务端可以在同一宿主机,可以在不同主机上

Docker守护进程的配置和操作

使用ps命令可以查看docker 守护进程运行状况

[[email protected] system]# ps -ax |grep docker
15255 ?        Ssl    0:21 /usr/bin/dockerd -b=br0 --fixed-cidr=172.25.11.1/24 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --iptables=true --icc=false
15261 ?        Ssl    0:06 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
15293 pts/2    S+     0:00 grep --color=auto docker

docker的启动选项

docker启动配置文件:/lib/systemd/system/docker.service


运行相关:
    -D, --debug=false
    -e,--exec-driver="native"
    -p,--pidfile="/var/run/docker.pid"
服务器相关:
    -G,--group="docker"
    -H,--host=[]
    --tls=false
RemoteAPI相关:
    --api-enable-cors=false
存储相关:
    -S,--storage-driver=""
    --selinux-enabled=false
    --storage-opt=[]
网络设置相关:
    -b,--bridge="" 设置自定义网桥
    --bip=""
    --dns=[]
    --ip=0.0.0.0

docker的远程访问

默认情况下,Docker守护进程会生成一个socket(/var/run/docker.sock)文件来进行本地进程通信,而不会监听任何端口,因此只能在本地使用docker客户端或者使用Docker API进行操作。如果想在其他主机上操作Docker主机,就需要让Docker守护进程监听一个端口,这样才能实现远程通信。

修改docker守护进程启动选项

​ -H tcp://host:port

​ unix:///path/to/sockt //默认守护进程配置

​ fd://* or fd://socktfd

要实现远程访问,就要更改docker的-H选项,使用tcp模式,更改docker配置文件 */lib/systemd/system/docker.service*


[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

在[Service]模块最后添加指定可以本地登陆和通过tcp登陆(远程),修改完配置后要重启服务


[[email protected] system]# systemctl daemon-reload 
[[email protected] system]# systemctl restart docker
[[email protected] system]# netstat -antple |grep 2375
tcp6       0      0 :::2375                 :::*                    LISTEN      0          129198     11458/dockerd     
[[email protected] system]# ps -axu |grep docker
root     11458  0.2  0.7 510800 28112 ?        Ssl  14:31   0:00 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
root     11465  0.0  0.1 291948  7236 ?        Ssl  14:31   0:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root     12646  0.0  0.0 112648   956 pts/0    S+   14:35   0:00 grep --color=auto docker

测试远程访问:


[[email protected] system]# docker -H 172.25.254.11:2375 images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
fsx/nginx           latest              b4f46238b357        47 hours ago        206 MB
ubuntu              14.04               8cef1fa16c77        4 weeks ago         223 MB
wordpress           4.4.2               e146b48c1da2        2 years ago         517 MB
ubuntu              latest              07c86167cdc4        2 years ago         188 MB