5.Docker服务进程关系
Docker服务进程关系
宿主机进程关系

注意:此图片适用于18.09.X版本;如果是18.06之前版本,containerd的父进程不再是systemd,而是dockerd;名字为docker-containe。
containerd进程关系
| containerd进程关系 | |
|---|---|
| dockerd | 被client直接访问,其附近成为宿主机的systemd守护进程 | 
| docker-proxy | 实现容器通信,维护生成iptables规则,父进程为dockerd | 
| containerd | 被dockerd进程调用以实现与runc交互 | 
| containerd-shim | 真正运行容器的载体,其父进程为containerd | 
|  | 
containerd-shim命令
~]# containerd-shim -h
Usage of containerd-shim:
  -address string
    	grpc address back to main containerd
  -containerd-binary containerd publish
    	path to containerd binary (used for containerd publish) (default "containerd")
  -criu string
    	path to criu binary
  -debug
    	enable debug output in logs
  -namespace string
    	namespace that owns the shim
  -runtime-root string
    	root directory for the runtime (default "/run/containerd/runc")
  -socket string
    	abstract socket path to serve
  -systemd-cgroup
    	set runtime to use systemd-cgroup
  -workdir string
    	path used to storge large temporary data
容器的创建于管理过程通信流程
- docker通过grpc和containerd模块通信(runc)交换,dockerd和containerd通信的socker文件:/run/containerd/containerd.sock
- containerd在dockerd启动时被启动,然后containerd启动grpc请求监听,containerd处理grpc请求,根据请求做相应动作。
- 若是创建容器,containerd拉起一个container-shim容器进程,并进行相应的创建操作。
- container-shim被拉起后,start/exec/create拉起runC进程,通过exit、control文件和containerd通信,通过父子进程关系和SIGCHLD(信号)监控容器中进程状态。
- 在整个容器生命周期中,containerd通过epoll监控容器文件,监控容器事件。

grpc
gRPC是Google开发的一块高性能、开源和通用的RPC框架,支持众多语言客户端
https://www.grpc.io/

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号