ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker架构及工作流程

2019-12-16 11:55:39  阅读:256  来源: 互联网

标签:容器 架构 隔离 shim 流程 启动 镜像 docker


一、概念
docker是开源容器引擎,基于cgroup,namespace,unionFS等技术实现,对应用进行封装的虚拟化技术

什么是cgroup?
对系统资源限制,创建容器的过程其实就是在创建进程,对资源的分配和维护使用cgroup来管理,包括cpu,内存,io等?
什么是namespace?
创建容器时,对容器来说就是一个全新的系统,容器内的文件系统要和宿主机文件系统隔离,网络空间隔离,用户权限隔离,这些隔离操作都是有namespace 来管理完成的
什么是unionFS?
联合文件系统,简单理解就是多个目录结构合并成一个,而各个目录结构本身物理位置并没有变化。

二、架构
docker架构及工作流程
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.灰度发布

五、容器与虚拟机的额区别
docker架构及工作流程

  1. VM 技术层⾯面是基于硬件的 hypervisor 层实现的, 而 container 是基于操作系统上软件 docker engine 实现的
  2. VM 要进行应⽤用隔离, 必须先创建⼀一个新的臃肿的 os, 与其说是对应用隔离, 不如说是系统隔离
  3. VM 资源消耗⼤大, 启动慢, 系统隔离, 且由于基于硬件, 所以需要硬件支持虚拟化; Container 资 源消耗小, 启动快, 进程隔离, 不用考虑CPU是否支持虚拟化

标签:容器,架构,隔离,shim,流程,启动,镜像,docker
来源: https://blog.51cto.com/haoyonghui/2458796

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有