运维之旅

  • Home
  • Blog
  • Archives
  • About Me
Leo zhou
  1. 首页
  2. Docker
  3. 正文

Docker容器组件

2019年10月29日 1510点热度 1人点赞 0条评论

从docker1.11版本开始,docker容器运行已经不是简单的通过docker daemon守护进程来启动,而是集成了containerd、containerd-shim、runC等多个组件。docker服务启动之后,系统上通过命令可以查看到dockerd、docker-containerd等进程。

Docker容器组件介绍
Docker CLI(docker)
docker程序是一个客户端工具,用来把用户的请求发送给docker daemon(dockerd)。

Dockerd
dockerd作为docker容器管理的守护进程(docker daemon),守护进程负责和docker client交互,并管理docker镜像和容器;一般也会被称为docker engine。

Containerd
containerd是容器技术标准化之后的产物,为了能够兼容OCI标准,将容器运行时及其管理功能从docker daemon剥离。理论上,即使不运行dockerd,也能够直接通过containerd来管理容器。

Containerd-shim
它是containerd的组件,是容器的运行时载体,在容器的主机上通过命令可以查看到每个docker容器所对应的containerd-shim。

RunC
runC进程是作为containerd-shim的子进程存在的,runC进程根据配置找到容器的rootfs并创建子进程bash作为容器中的第一个进程。当这一切都完成后runC进程退出,然后容器进程bash由runC的父进程containerd-shim接管。

Docker组件工作流程

  • docker客户端向dockerd发送请求创建容器,dockerd会从容器镜像仓库拉取镜像。
  • dockerd从镜像仓库拉取对应镜像,并向containerd发起运行容器的请求。
  • 当containerd收到dockerd启动容器的请求之后,会做一些初始化工作,然后启动containerd-shim进程,并将相关配置作为参数传给它。docker-containerd负责管理所有本机正在运行的容器,而一个containerd-shim进程只负责管理一个运行的容器。
  • containerd-shim启动runC进程,runC进程把容器输出的内容反馈给containerd-shim,最终传递到docker客户端。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: docker 组件
最后更新:2019年10月29日

Leo zhou

点赞
< 上一篇
下一篇 >

文章评论

取消回复

Leo zhou

最新 热点 随机
最新 热点 随机
多网卡下网络细节思考 Prometheus+Alertmanager多方式报警设置 多节点集群思路 内网dns配置 MySQL集群配置思路
内网dns配置 Docker跨主机网络实践 Prometheus+Alertmanager多方式报警设置 Docker-compose容易忽略的使用细节 多网卡下网络细节思考
标签聚合
docker mysql k8s 网络 keepalived zabbix kubernetes rancher
分类目录
  • Code (5)
  • Deploy (9)
  • Docker (9)
  • elk (1)
  • kubernetes (7)
  • Linux (7)
  • Monitor (3)
  • Windows (1)
搜索

COPYRIGHT © 2021 运维之旅. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

蜀ICP备16022832号-3