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

容器的創建於管理過程通信流程

  1. docker通過grpc和containerd模塊通信(runc)交換,dockerd和containerd通信的socker文件:/run/containerd/containerd.sock
  2. containerd在dockerd啟動時被啟動,然后containerd啟動grpc請求監聽,containerd處理grpc請求,根據請求做相應動作。
  3. 若是創建容器,containerd拉起一個container-shim容器進程,並進行相應的創建操作。
  4. container-shim被拉起后,start/exec/create拉起runC進程,通過exit、control文件和containerd通信,通過父子進程關系和SIGCHLD(信號)監控容器中進程狀態。
  5. 在整個容器生命周期中,containerd通過epoll監控容器文件,監控容器事件。

grpc

gRPC是Google開發的一塊高性能、開源和通用的RPC框架,支持眾多語言客戶端

https://www.grpc.io/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM