docker架构及工作流程
一、概念
docker是开源容器引擎,基于cgroup,namespace,unionFS等技术实现,对应用进行封装的虚拟化技术
10年积累的成都网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有龙亭免费网站建设让你可以放心的选择与我们合作。
什么是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标准的一个容器技术实现,是一个可以直接创建和运行容器的工具。runc直接与容器所依赖的cgroups/kernel等进行交互,负责容器所需环境
2.工作流程
docker client发出创建容器指令,docker engine接到指令后去镜像仓库拿到镜像后,通过grpc调用通知docker-containerd启动容器,docker-containerd收到通知后启动shim进程,shim进程启动后,运行runC子进程,runcC会和cgroup,kernel交互,启动容器,然后runC销毁,shim接管容器并监控容器, 整个容器创建过程完成
三、镜像和容器的关系
镜像可以理解为一系列封装好的目录,容器理解为将这些封装好的目录合并挂载,镜像是静态资源,容器是可读写的,
四、容器应用场景
1.环境一致性
2.CI/CD
3.微服务
4.弹性伸缩
5.灰度发布
五、容器与虚拟机的额区别
- VM 技术层⾯面是基于硬件的 hypervisor 层实现的, 而 container 是基于操作系统上软件 docker engine 实现的
- VM 要进行应⽤用隔离, 必须先创建⼀一个新的
臃肿
的 os, 与其说是对应用隔离, 不如说是系统隔离 - VM 资源消耗⼤大, 启动慢, 系统隔离, 且由于基于硬件, 所以需要硬件支持虚拟化; Container 资 源消耗小, 启动快, 进程隔离, 不用考虑CPU是否支持虚拟化
分享题目:docker架构及工作流程
网站URL:http://lswzjz.com/article/gjpsep.html