docker架构及工作流程
一、概念 docker是开源容器引擎,基于cgroup,namespace,unionFS等技术实现,对应用进行封装的虚拟化技术 什么是cgroup? 对系统资源限制,创建容器的过程其实就是在创建进程,对资源的分配和维护使用cgroup来管理,包括cpu,内存,io等? 什么是namespace? 创建容器时,对容器来说就是一个全新的系统,容器内的文件系统要和宿主机文件系统隔离,网络空间隔离,用户权限隔离,这些隔离操作都是有namespace 来管理完成的 什么是unionFS? 联合文件系统,简单理解就是多个目录结构合并成一个,而各个目录结构本身物理位置并没有变化。 二、架构 1.C/S架构 组件: docker cli: docker客户端,用来管理docker,向docker发送指令的工具 docker engine: 拉取推送镜像,对容器操作相关的api的最上层封装,直接面向client image repository: 注册中信,存储镜像的地方 Containerd: 是一个守护进程,负责管理shim,向docker engine提供接口,使用UnixSocket通信,协议是grpc shim: 负责管理单个容器,启动一个容器,就会启动一个shim进程, containerd管理所有容器 runC: 运行一个容器。是基于OCI标准的一个容器技术实现