Docker容器技术原理

news2024/10/6 0:33:38

深入剖析Linux容器

Docker本质是宿主机上的进程,通过namespace实现资源隔离,通过cgroups实现资源限制
docker深度学习-github

Docker技术原理

Docker 是利用 Linux 的 Namespace 、Cgroups 和联合文件系统三大机制来保证实现的, 所以它的原理是使用 Namespace 做主机名、网络、PID 等资源的隔离,使用 Cgroups 对进程或者进程组做资源(例如:CPU、内存等)的限制,联合文件系统用于镜像构建和容器运行环境。
● namespace
○ 实现机器内核资源的隔离
○ 使得容器进程可以在单独的命名空间下运行,并且只可以访问当前容器命名空间的资源
● Cgroups:Linux Control Group
○ 限制和隔离进程资源使用情况(CPU,内存,磁盘I/O,网络)
○ 优先级控制
○ 审计-计费用
○ controle- 挂起和回复进程
○ 限制容器资源的使用
● UnionFS:联合文件系统
○ 分层、轻量级并且高性能的文件系统,
○ 它支持对文件系统的修改作为一次提交来一层层的叠加
○ 同时可以将不同目录挂载到同一个虚拟文件系统下
○ Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
在这里插入图片描述

○ 最上面的容器层是可写的,下面的镜像层都是只读;实现一个镜像被多个容器共享

Nasmespace资源隔离机制

namespace是Linux提供的资源隔离机制,只有同一个ns下的进程可以相互联系,但是无法感受到外部进程的存在
简单来说,Namespace 是 Linux 内核的一个特性,该特性可以实现在同一主机系统中,对进程 ID、主机名、用户 ID、文件名、网络和进程间通信等资源的隔离。Docker 利用 Linux 内核的 Namespace 特性,实现了每个容器的资源相互隔离,从而保证容器内部只能访问到自己 Namespace 的资源。
在这里插入图片描述

mount namespace

用来隔离不同进程或者进程组看到的挂载点,实现不同的进程看到不同的挂载目录;实现容器的文件系统隔离

PID namespace

再不用的PIDns中,进程可以拥有相同的PID,理由PID NS可以实现每个容器的主进程都是1号进程,二容器内的进程在主机上却拥有不同的PID;例如一个进程在主机上 PID 为 122,使用 PID Namespace 可以实现该进程在容器内看到的 PID 为 1

UTS namespace

隔离主机名,允许每个uts NS拥有一个独立的主机名

IPC namespace

隔离进程通信,PID NS和IPC NS一起使用可以实现,同一IPC NS下的进程可以彼此通信,不同IPC NS 下的进程却不能通讯;

User namespace

隔离用户和用户组
应用:在主机上以非root用户运行的进程可以在一个单独的User NS中映射成Root用户

Net namespace

隔离网络设备、IP地址和端口登信息
Net NS可以让每个进程拥有自己独立的IP地址,端口和网卡信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI和机器人引领新一轮农业革命

AI和机器人技术在农业领域的应用正在迅速发展,未来它们可能会实现厘米级精度的自主耕作。 精确种植:AI算法可以分析土壤条件、气候数据和作物生长周期,以决定最佳种植地点和时间。 土壤管理:利用传感器和机器学习,机器…

TEE的密码学算法都支持哪些?你们都是如何实现的?

先说TEE OS中都支持哪些密码学算法?需要支持哪些密码学算法? 我们从GP规范的角度来看。在一般的tee中,都号称支持GP规范。GP规范里要求的强制支持的算法,一般都会实现。对于GP规范里可选的算法,并不是每一家TEE都能支持的。 强制要求的算法 可选支持的算法有 再来看TEE O…

python pip 安装

如果您不确定pip的安装路径,可以通过以下命令来查询: pip show pip 这个命令会显示pip的详细信息,其中包括pip安装的路径。如果您想修改pip的默认安装路径,可以使用pip的"--target"参数指定目标路径,例如&a…

堡垒机的自动化运维,快速安全提升运维效率

随着信息技术的突飞猛进,企业对于IT系统的依赖程度日益加深,不仅希望可以提高运维效率,也希望能保障IT系统的安全。因此堡垒机与自动化运维技术的结合应运而生,堡垒机的自动化运维,快速安全提升运维效率。今天我们就来…

Android 绑定服务的5个问题。

1.android studio 目录结构改变了。为什么会报R 资源文件找不到。 在写项目的时候经常需要改到。 gradle文件里的域名名字要改变下。 2.Caused by: android.app.BackgroundServiceStartNotAllowedException: Not allowed to start service Intent { cmpcom.zjtzsw.sbkDevice/…

Arthas使用教程——JVM常用命令

JVM相关命令 dashboard——当前系统的实时数据面板 显示当前 tomcat 的实时信息。 使用方式:dashboard 数据说明 ID: Java 级别的线程 ID,注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。 NAME: 线程名 GROUP: 线程组名 PRIORITY: 线程优先级…

探索多头混合专家(MH-MoE)模型的先进架构

在深度学习领域,大型模型如大型语言模型(LLMs)和大型多模态模型(LMMs)因其在各个领域的有效性而受到广泛关注。然而,这些模型在训练和推理时面临着巨大的计算成本。为了解决这一问题,研究者们提…

【Python】深入认识Python数据类型和变量

​​​​ 文章目录 1. 引言数据类型的重要性Python中的数据类型概述 2. 数字类型整型(int)浮点型(float)复数(complex) 3. 字符串类型字符串的定义与使用字符串操作方法 4. 布尔类型布尔值和布尔运算 5. 列…

【RK3568】制作Android11开机动画

Android 开机 logo 分为两种:静态显示和动态显示。静态显示就是循环显示一张图片;动态显示就是以特定帧率顺序显示多张图片 1.准备 android logo 图片 Android logo最好是png格式的,因为同一张图片的情况下,png 格式的比 jpg和b…

kafka命令--简单粗暴有效

zookeeper bin目录下执行 启动:./zkServer.sh start 停止:./zkServer.sh stop 重启:./zkServer.sh restart 状态:./zkServer.sh status kafka bin目录下执行 启动:./kafka-server-start.sh -daemon …/config/server.…

三款强大的Node.js版本控制工具推荐

在Web开发领域,Node.js无疑是一个热门的JavaScript运行时环境,它允许开发者使用JavaScript来构建服务器端应用程序。随着Node.js版本的不断更新,管理多个Node.js版本变得尤为重要。以下是三款实用的Node.js版本管理工具,它们可以帮…

VS2015安装模块时报错:安装包丢失或损坏,,,,,无效的驱动器

解决: 1、解压.iso文件; 2、替换目录 替换为解压后的对应的目录,点击重试即可。

二说springboot3的自动配置机制

大家好,这里是教授.F 目录 SpringBootApplication: EableAutoConfiguration: 上一篇文章粗略的讲了自动配置机制,二说系列将从源码的角度进行讲解。 SpringBootApplication: 首先我们还是得从SpringBootApplication…

大数据之HDFS磁盘扩容(linux磁盘扩容)

之所以扩容,是因为当前大数据平台已经接入了不同来源的数据,当执行mapreduce任务时,会发生磁盘爆满,导致hdfs爆红 具体扩容方案如下: 1、查看云磁盘分区情况 fdisk -l . 可以从图看出: /dev/vda 数据盘磁盘容量为21.5GB,包含/dev/vda1分区 /dev/vdb 数…

GD32F4XX的ISP方式下载程序时的串口选择

官方资料 详细信息可参考GD32F4xx的用户手册,第 1.4 章节 引导配置 。 版本是 :GD32F4xx_User_Manual_Rev3.0_CN 资料链接: https://www.gd32mcu.com/cn/download/6?kwGD32F4

Vue3【八】ref创建基本类型的响应式数据

ref创建基本类型的响应式数据 在setup中直接声明变量不是实时变化的响应式数据 要想使基本类型数据变成响应式数据&#xff0c;需要用到ref()函数 案例截图 案例目录 案例代码 Person <template><div class"person"><h1>我是Person组件</h1&g…

数据结构~~排序

目录 一、排序的概念 二、插入排序 直接插入排序 希尔排序 三、选择排序 选择排序 堆排序 四、交换排序 冒泡排序 快速排序 递归实现 非递归实现 五、归并排序 递归 非递归 六、非比较排序&#xff08;计数排序&#xff09; 七、其他排序 基数排序 桶排序 八…

使用JMeter软件压测接口配置说明

1、下载完该软件https://blog.csdn.net/wust_lh/article/details/86095924 2.点击bin文件中jmeter.bat脚本https://blog.csdn.net/wust_lh/article/details/86095924 3.官网地址https://jmeter.apache.org/download_jmeter.cgi 通过 【Options】->【Choose Language】变更为…

uniapp uni-popup内容被隐藏问题

今天开发新需求的时候发现uni-popup 过一会就被隐藏掉只留下遮罩(css被更改了)&#xff0c;作者进行了如下调试。 1.讲uni-popup放入其他节点内 失败&#xff01; 2.在生成dom后在打开 失败&#xff01; 3.uni-popup将该节点在包裹一层 然后将统计设置样式&#xff0c;v-if v-s…

如何格式化SQL语句(以MySQL和SQLynx为例)

目录 1 SQLynx 格式化MySQL的SQL 语句功能介绍 1.1 主要特点 1.2 使用步骤 1.3 操作示例 2 结论 SQLynx 是一款功能强大的 SQL 集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了多种工具和功能来提高用户的生产力和代码质量。其中&#xff0c;SQL 语句的格式…