Docker学习之前需要了解的几个概念

这篇具有很好参考价值的文章主要介绍了Docker学习之前需要了解的几个概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1. 命名空间(Namespaces)

命名空间是Linux内核提供的资源隔离机制,它通过创建多个独立的全局视图,使得在不同命名空间中的进程可以拥有各自独立且互不干扰的系统资源。每个命名空间提供了一种逻辑上的隔离效果,让进程看到的是一个受限或定制化的环境,而非整个系统的全局状态。举个例子,每个组都有自己的独立工作环境和资源,并且同一名称的员工(如同名的法外狂徒“张三”)在不同部门中代表的是完全不同的个体。例如,开发组的张三负责写代码开发功能,而测试组的张三则负责功能测试。

全局视图:在计算机系统中,通常存在一个全局范围内的资源集合,例如所有运行的进程都有唯一的PID(进程ID),所有的网络接口卡都有唯一的设备名称和IP地址等。而通过命名空间,每个被隔离的环境——也即每个容器或特定进程组——看到的是其自身命名空间内的资源列表,对这个环境而言,它是“全局”的,但实际上只是整个宿主机全局资源的一部分。

Docker学习之前需要了解的几个概念,docker从入门到大神,docker,学习,容器

1.1.1. 以下是常见的几种命名空间类型:
  1. PID Namespace:为进程分配独立的进程ID空间,使得各命名空间内的进程ID在全局范围内不会冲突。
  2. Mount Namespace:隔离文件系统的挂载点,使得每个命名空间内的挂载视图不同,可实现独立的文件系统结构。
  3. Network Namespace:为每个命名空间提供独立的网络接口、路由表、防火墙规则等网络资源。
  4. UTS Namespace:隔离主机名和域名信息,使得各个命名空间可以有不同的主机名。
  5. IPC Namespace:隔离进程间通信资源,如信号量、消息队列和共享内存。
  6. User Namespace:隔离用户和组ID,允许容器内部具有不同于宿主机的用户和权限映射。
1.2. 控制组(cgroups)

控制组(Control Groups,简称cgroups)则是Linux内核提供的另一种资源限制和优先级管理机制。cgroups可以将一组进程组织在一起,并对这一组进程整体应用各种资源限制,如CPU使用率、内存大小、磁盘I/O带宽、网络带宽等。这样做的目的是为了确保进程无法无限制地消耗系统资源,从而保证系统的稳定性和服务质量。

Docker学习之前需要了解的几个概念,docker从入门到大神,docker,学习,容器

举个例子,比如我们去吃自助火锅,为了防止多拿浪费,餐厅规定一个桌最多只能拿二十份菜。这里的“cgroup”就像一个个餐桌,每个餐桌代表了一个资源分配的单元。当顾客在对应餐桌用餐时,他们的食物选择会受到该餐桌规则的约束。

1.3. LXC(Linux Containers)

LXC(Linux Containers)可以理解为一种“轻量级虚拟化技术”,

具体来说,LXC利用了Linux内核提供的命名空间和控制组功能,使得每个容器看起来像是一个独立的操作系统环境,但实际上它们共享同一个底层内核,只是在隔离的环境中运行各自的进程和服务。这样做的好处在于资源利用率高、启动速度快,而且能够有效防止不同应用之间相互干扰。

Docker学习之前需要了解的几个概念,docker从入门到大神,docker,学习,容器

这就好比我们的合租房,房东(LXC)为我们准备了独立的小房间(假装独立的操作系统),每个小房间都有自己的家具(文件系统),电源(cpu),网线(网络链接)等设备,与整租房相比(传统的虚拟技术如虚拟机),这些小房间并没有一套完整的居住设施(完整的操作系统),每个房间里没有厨房和卫生间,而是所有的房间共享一套厨房和卫生间(内核)文章来源地址https://www.toymoban.com/news/detail-816582.html

1.4. 联合文件系统(Union File System)
  • 联合文件系统:(简称UnionF)是一种创新的文件系统技术,它的核心概念是将多个独立的、物理上分离的文件系统层组合在一起,形成一个统一的、逻辑上的文件系统。这种组合不是简单的物理堆叠,而是在访问时根据需要动态地合并各层的内容,呈现给用户或应用程序一个看上去单一且连续的文件系统结构,通俗的说就是将多个文件目录挂在到一个文件目录下面,而目录的物理地址是封开的。
  • 在联合文件系统的上下文中,当对某个文件进行读取操作时,系统会按照文件系统层次从上至下查找,找到最近的一份该文件的副本提供给用户。而对于写入和修改操作,联合文件系统不会直接修改原始底层文件,而是采用了一种称为“写时复制”(Copy-On-Write, COW)的技术策略。这意味着,当你试图更改一个文件时,实际上系统会在当前可写的顶层创建这个文件的一个新版本,原始内容保持不变。这样做的好处在于:
  • 数据保护:由于不直接修改底层只读文件系统,因此可以避免意外破坏基础镜像或存储层。
  • 高效利用存储:通过仅保存有差异的部分,避免了冗余的数据存储,特别是在构建类似Docker这样的容器环境时,多层镜像间共享大部分相同的底层数据,极大地节省了磁盘空间。
  • 快速部署与回滚:由于改动被记录在单独的层中,使得恢复到之前的某个状态变得非常容易,只需切换到相应的层即可实现应用的快速回滚或版本切换

到了这里,关于Docker学习之前需要了解的几个概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 容器编排的几个概念理解

    1.1、 如何理解容器编排 ? 先拆成两个部分,什么是容器?什么是编排?以前,程序运行在物理机或虚拟机中。容器,是现代程序的运行方式。编排就是部署、管理应用程序的系统,能动态地响应变化,例如以下部分功能。 - 回滚 - 滚动升级 - 故障自愈 - 自动扩缩容 自动完成

    2024年02月12日
    浏览(28)
  • 西门子PLC硬件编程需要注意的几个要点

    往往一个好的编程程序习惯可以让事情事半功倍。用正确的逻辑思维和方法去写程序,一方面可以减少出错,另一方面就是方便检查程序里出现的bug。下面就为大家盘点一下,西门子PLC的一些硬件编程的好习惯。 1、关于选型 项目开始需要统计出IO点表,一般在设计初期需要

    2024年02月15日
    浏览(31)
  • InnoDB中必须要了解的几个关键特性

    InnoDB引擎在设计中使用了很多技术思想。下面我们主要介绍一些InnoDB的关键特性,帮助你去更好了解 InnoDB。 预读,我们从字面就可以知道是指:预先读取一些信息。为什么要预读?判断哪些数据可以提前读取到内存中,从而减少IO次数。我们知道硬盘、内存的IO速度差距极大

    2023年04月27日
    浏览(30)
  • 连接贝尔金无线路由器时需要注意的几个常见问题

        一、随着使用无线设备连接无线网的情况越来越多,同时涌现出越来越多的无线网络问题,针对个人设备的网络访问控制、为移动访问建立限制和政策、外界干扰对无线网络的影响、无线网络安全以及移动设备数据监督等。 二、不过好在还可以支持客户部署新的无线网络

    2024年02月05日
    浏览(49)
  • 图的几个基本概念:连通图、强连通图、完全图等

    1、v,w表示v到w的一条弧,v是弧尾、w是弧头 2、 无向 完全图 :任意两个顶点之间都有边,n个顶点有1/2 *n *(n-1)条边; 3、 有向完全图 :任意两个顶点之间都存在方向相反的两条弧  n个顶点有 n *(n-1) 条边 ; 4、 子图 :假设有两个图G=(V,{E})和g=(v,{e}),如果v⊆V,e⊆E,则称

    2024年02月11日
    浏览(30)
  • 大学生互联网+商业运营常碰到的几个概念问题

    大学生毕竟不是商场老油条,没有经历过多少社会。很多时候大学生的”互联网+“商业模式中一会这个公司一会那个商品,被不少商业人士不屑。但是我们实事求是地讲,有了总比没有强吧。用比较正式的话来说,互联网+”大赛的意义在于建立了促进学生全面发展的重要平

    2024年02月07日
    浏览(23)
  • 计算机视觉之——camera的几个概念-焦距、视场、光圈、快门等

    做了一年的激光点云,现在重拾计算机视觉算法。回头来看,反而对视觉有了更全面的认识。现在,就从最基础的开始,把一些回顾的内容记录下来。也分享出来给大家参考。 (图片来源网上,侵删) (图片来源网上,侵删) 相机成像遵循小孔成像原理。焦距就是从光心到

    2024年02月06日
    浏览(23)
  • 万应低代码CTO胡艳平:赛道的喧嚣,带来的几个概念混淆

    前言: 随着低代码渐火,一方面,资本市场纷纷将眼光投向这个赛道,另一方面,更多企业将低代码视为数字化转型利器。而与低代码居高不下的这种热度相伴而来的,是一场关于低代码的概念之争,有的人认为它是第四代编程语言,有人认为它是开发模式的一种颠覆,也有

    2024年01月20日
    浏览(28)
  • 【Docker】如何查看之前docker run命令启动的参数

    个人主页 :金鳞踏雨 个人简介 :大家好,我是 金鳞 ,一个初出茅庐的Java小白 目前状况 :22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客 :这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进

    2024年02月08日
    浏览(34)
  • 〖程序员的自我修养 - 认知剖析篇②〗- 学习编程之前你需要知道这些

    人之所以会觉得迷茫,本质上是欠缺对自己的一个控制力、识别庞杂信息、去伪存真的独立思考与认知能力。 说明:该文属于 程序员的自我修养 专栏, 购买任意白宝书体系化专栏可加入 易编程社区, 早鸟价订阅模式除外 。 福利:加入社区的小伙伴们,除了可以获取博主

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包