docker架构及工作流程(代码片段)

author author     2023-05-04     421

关键词:

一、概念
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是否支持虚拟化

docker架构镜像及容器的基本操作(代码片段)

Docker架构、镜像及容器的基本操作前言引导Docker是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟机,诞生于2013年。Docker的设计宗旨:Build、ShipandRunAny、Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的... 查看详情

详解docker架构镜像容器及资源限制(代码片段)

Docker概述Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。?Docker核... 查看详情

docker架构原理及简单使用(代码片段)

...,只是再最下面标注参考连接谢谢一、简介  1、了解docker的前生LXC     LXC为LinuxContainer的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的... 查看详情

docker架构镜像及容器的安装和基本操作(代码片段)

Docker概念Docker是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟机。Docker的宗旨:Build,ShipandRunAnyAPP,Anywhere,即通过对应用组件的分装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次分装,到处运行”... 查看详情

什么是dockerdocker架构及docker安装卸载(代码片段)

(目录)初识Docker1.什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦1.1.应用部署的环境问题大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:1.2.Docker解决依赖兼容问题Docker... 查看详情

docker及docker-compose学习(代码片段)

一 docker简介   Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互... 查看详情

云原生docker架构及工作原理

一、Docker概述二、Client客户端三、Docker引擎四、Image镜像五、Container容器六、镜像分层可写的容器层七、Volume数据卷八、Registry注册中心九、总结一、Docker概述Docker是一个开发、发布和运行应用程序的开放平台。Docker使您能够将... 查看详情

云原生第二篇--容器管理工具docker生态架构及部署(代码片段)

容器管理工具Docker生态架构及部署一、Docker生态架构1.1DockerContainersAreEverywhere1.2生态架构1.2.1DockerHost1.2.2Dockerdaemon1.2.3Registry1.2.4Dockerclient1.2.5Image1.2.6Container1.2.7DockerDashboard1.3Docker版本二、Docker部署2.1使用YUM源部署2.1.1获取阿里云开... 查看详情

深入了解rabbitmq工作原理及简单使用(代码片段)

...实践RabbitMQ事务和Confirm发送方消息确认——深入解读使用Docker部署RabbitMQ集群你不知道的RabbitMQ集群架构全解RabbitMQ简介在介绍RabbitMQ之前实现要介绍一下M 查看详情

docker安全及日志管理(代码片段)

docker安全及日志管理一、Docker容器与虚拟机的区别1.隔离与共享2.性能与损耗3.总结二、Docker存在的安全问题1.Docker自身漏洞2.Docker源码问题三、Docker架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS攻击耗尽资源3.有漏洞的系统调... 查看详情

docker安全及日志管理(代码片段)

docker安全及日志管理一、Docker容器与虚拟机的区别1.隔离与共享2.性能与损耗3.总结二、Docker存在的安全问题1.Docker自身漏洞2.Docker源码问题三、Docker架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS攻击耗尽资源3.有漏洞的系统调... 查看详情

docker的安全及日志管理(代码片段)

Docker的安全及日志管理前言一、Docker容器与虚拟机的区别1.隔离与共享2.性能与损耗二、Docker存在的安全问题1.Docker自身漏洞2.Docker源码问题三、Docker架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS攻击耗尽资源3.有漏洞的系统调... 查看详情

docker的安全及日志管理(代码片段)

Docker的安全及日志管理前言一、Docker容器与虚拟机的区别1.隔离与共享2.性能与损耗二、Docker存在的安全问题1.Docker自身漏洞2.Docker源码问题三、Docker架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS攻击耗尽资源3.有漏洞的系统调... 查看详情

docker的安全及日志管理介绍(代码片段)

Docker的安全及日志管理一、Docker容器与虚拟机的区别1.隔离与共享2.性能与损耗二、Docker存在的安全问题1.Docker自身漏洞2.Docker源码问题三、Docker架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS攻击耗尽资源3.有漏洞的系统调用4.... 查看详情

docker全解(代码片段)

目录说明docker简介为什么是docker容器与虚拟机比较容器发展简史传统虚拟机技术容器虚拟化技术docker能干什么带来技术职级的变化开发/运维(Devops)新一代开发工程师Docker应用场景whydocker?docker的优势docker和dockerHub官网Doc... 查看详情

devops架构师--01走进docker的世界(代码片段)

文章目录第一天走进Docker的世界认识docker为什么出现docker什么是dockerdocker能做什么版本管理发展史小结安装配置宿主机网卡转发Yum安装配置docker核心要素及常用操作详解镜像(Image)容器(Container)仓库(Regist... 查看详情

hbase架构详解及读写流程原理剖析(代码片段)

1、HBase简介HBase是BigTable(架构如下图所示)的开源“山寨”版本,建立在hdfs(对应GFS)之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。HBase底层依赖于HDFS的。整体架构图如下:HBa... 查看详情

docker知识点总结及技术实战流程(附单独练习参考)(代码片段)

Docker实战一:知识点总结Docker技术概述Docker是一个虚拟化平台,基于Google公司的Go语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。Docker核... 查看详情