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

1.1. 命名空间(Namespaces)

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

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

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带宽、网络带宽等。这样做的目的是为了确保进程无法无限制地消耗系统资源,从而保证系统的稳定性和服务质量。

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

1.3. LXC(Linux Containers)

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

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值