docker是一个典型的c/s架构产品。
dockerd :为客户端提供 RESTFUL API,响应来自客户端的请求, 采用模块化的架构, 通过专门的 Engine 模块来分发管理各 个来自客户端的任务。 可以单独升级;
docker-proxy :是 dockerd 的子进程, 当需要进行容器端口映射时, docker-proxy 完成网络映射配置;
[root@master ~]# ps -ef |grep [doc]ker-proxy root 6550 3875 0 21:26 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 10000 -container-ip 172.17.0.3 -container-port 80 [root@master ~]# ps -ef |grep 38[75] root 3875 1 1 2月19 ? 07:29:54 /usr/bin/dockerd -H fd:// root 6550 3875 0 21:26 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 10000 -container-ip 172.17.0.3 -container-port 80
containerd :以前是dockerd 的子进程(在此版本中独立运行), 提 供 gRPC 接口响应来自 dockerd 的请 求,对下管理 runc 镜像和容器环境。 可以单独升级;
[root@master ~]# pstree systemd─┬─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─abrt-watch-log ├─abrtd ├─2*[agetty] ├─auditd───{auditd} ├─containerd─┬─6*[containerd-shim─┬─pause] │ │ └─10*[{containerd-shim}]] │ ├─containerd-shim─┬─etcd───11*[{etcd}] │ │ ├─sh │ │ └─12*[{containerd-shim}] │ ├─containerd-shim─┬─kube-apiserver───11*[{kube-apiserver}] │ │ └─11*[{containerd-shim}] │ ├─containerd-shim─┬─kube-scheduler───9*[{kube-scheduler}] │ │ └─10*[{containerd-shim}] │ ├─containerd-shim─┬─kube-controller───9*[{kube-controller}] │ │ └─10*[{containerd-shim}] │ ├─containerd-shim─┬─kube-proxy───8*[{kube-proxy}] │ │ └─10*[{containerd-shim}] │ ├─3*[containerd-shim─┬─nginx───nginx] │ │ └─10*[{containerd-shim}]] │ ├─containerd-shim─┬─flanneld───12*[{flanneld}] │ │ └─10*[{containerd-shim}] │ ├─3*[containerd-shim─┬─pause] │ │ └─9*[{containerd-shim}]] │ ├─2*[containerd-shim─┬─coredns───10*[{coredns}]] │ │ └─10*[{containerd-shim}]] │ └─30*[{containerd}] ├─crond ├─dbus-daemon ├─dockerd─┬─docker-proxy───6*[{docker-proxy}] │ └─15*[{dockerd}]
containerd-shim:是 containerd 的子进 程,为 runc 容器提供支持,同时作 为容器内进程的根进程。 runc 是从 Docker 公司开源的 libcontainer 项目演化而来