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标准的一个容器技术实现,是一个可以直接创建和运行容器的工具。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.灰度发布

五、容器与虚拟机的额区别

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

原文地址:https://blog.51cto.com/haoyonghui/2458796

时间: 2024-08-30 10:02:37

docker架构及工作流程的相关文章

Nginx的架构及工作流程

NGINX是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器.NGINX以其高性能,稳定性,丰富的功能集,简单的配置和低资源消耗而闻名,也是为解决C10K问题而编写的服务器之一.本文主要介绍Nginx的架构及工作流程. 一.Nginx的架构如下图 1.nginx启动后会有一个master进程和多个worker进程(woeker进程数量可配置,一般设置与机器的核心数一致),master进程负责管理worker进程(接收外界信号,发送信号到各worker进程

Hive的架构和工作流程

架构 1.hive是数据仓库,在hadoop基础上处理结构化数据:它驻留在hadoop之上,用户对数据的统计,查询和简单的分析操作. 2.hive不是 a.关系型数据库 b.OLTP c.实时查询和行级更新操作 3.hive特点 a.表模型存储在database(关系型)中,处理的数据存储在HDFS上: b.设计模式遵循OLAP c.它提供了一套类SQL的语言(HiveQL or HQL),用于执行查询 d.它是简单的,快速的,可扩展的和易伸缩的 4.hive架构 a.(用户接口)User In

2.nginx架构及工作流程

nginx是模块化设计: 模块大致可以分为: 1.核心模块(core) 2.基础模块(http,mail) 3.第三方模块(upstream,proxy,fastcgi) 功能:1.核心模块为nginx作为webserver,web or mail proxy提供一个大的基础 2.基础模块是核心模块与扩展模块的抽象衔接,同时完成某协议的功能 3.第三方模块,在对应基础模块的基础上,完成特定功能 nginx架构: nginx对于一个http请求的处理流程: 1.tcp/ip连接建立 2.woerk

【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boot 源码 : http://download.csdn.net/detail/han1202012/8342761 -- S3C2440 文档 : http://download.csdn.net/detail/han1202012/8342701 -- S5PV210_iROM_Applicati

ansible架构原理及工作流程

一.ansible介绍 ansible是一种自动化运维工具,基于paramiko模块开发,用于批量执行任务和发布工作,被广泛用于日常运维工作当中. 二.ansible架构架构图: ansible核心模块介绍:core models: ansible自带的模块,file,shell,copy等custom models: ansible自带模块不足以满足工作需要时,用户添加扩展模块host inventory: 由ansible 管理的主机,包括主机名,ip,端口等playbook: yaml格式

Docker源码分析(一):Docker架构

[编者按]在<深入浅出Docker>系列文章的基础上,InfoQ推出了<Docker源码分析>系列文章.<深入浅出Docker>系列文章更多的是从使用角度出发,帮助读者了解Docker的来龙去脉,而<Docker源码分析>系列文章通过分析解读Docker源码,来让读者了解Docker的内部实现,以更好的使用Docker.总之,我们的目标是促进Docker在国内的发展以及传播.另外,欢迎加入InfoQ Docker技术交流群,QQ群号:272489193. 1

docker架构拆解

?近期很多朋友都在学习docker,笔者也是在慢慢学习中.当大家在终端飞快的敲击docker的这些命令时:??docker ps??docker run??docker image??docker pull??...... ?大家有没有思考过,当使用这些命令时究竟发生了什么?它是一个怎样的执行流程.它的架构又是怎样呢?一起来了解一下吧. Docker架构 ?Docker使用了传统的cs架构模式(cilent-server),架构图如下图所示.用户通过Docker client与Docker da

Docker(三)Docker是如何工作的

摘自 https://mp.weixin.qq.com/s/SsXIuDqeze_et8vWQ8fr3g 一.Docker Client 也称为Docker客户端.其实就是Docker提供命令行界面工具,是许多Docker用户与Docker进行交互的主要方式.客户端可以构建,运行和停止应用程序,还可以远程与Docker_Host进行交互. 二.Docker daemon Docker daemon是服务器组建,以Linux后台服务的方式运行,是Docker最核心的后台进程,我们也把它称为守护进程

Apache Kafka工作流程| Kafka Pub-Sub Messaging

1.目标 在我们上一篇Kafka教程中,我们讨论了Kafka Docker.今天,我们将讨论Kafka Workflow.此外,我们将详细介绍Pub-Sub Messaging的工作流程以及Queue Messaging / Consumer Group的工作流程.此外,我们将看到ZooKeeper在Apache Kafka中的作用.那么,让我们从Kafka Workflow开始吧. Apache Kafka工作流程| Kafka Pub-Sub Messaging 2.什么是Kafka Wor