作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,docker封闭了哪些资源?

在运维工作中,Docker主要通过两种关键技术——命名空间(Namespaces)和控制组(cgroups)——来实现资源的封闭和隔离。以下是Docker封闭的主要资源类型及其具体实现方式:

1. 通过命名空间实现资源隔离

命名空间是Linux内核提供的一种资源隔离方案,它使得一组进程能够拥有自己独立的系统资源视图,从而避免与其他进程产生冲突。Docker利用这一机制,为每个容器提供了独立的运行环境。具体来说,Docker使用了以下几种命名空间:

  1. PID命名空间:确保每个容器都有自己独立的进程ID列表,容器内的进程不会与宿主机或其他容器的进程相互干扰。
  2. 网络命名空间:为每个容器提供独立的网络接口和虚拟IP地址,使得容器能够拥有自己独立的网络环境,实现网络资源的封闭。
  3. 挂载命名空间:隔离文件系统的挂载点,让不同容器有不同的文件视图。这保证了容器内对文件系统的操作不会影响到宿主机或其他容器。

此外,Docker还使用了UTS命名空间(提供主机名和域名隔离)、IPC命名空间(提供信号量、消息队列和共享内存隔离)等,以实现更全面的资源隔离。

2. 通过控制组实现资源限制

控制组(cgroups)是Linux内核提供的一种机制,用于限制、记录和隔离进程组所使用的物理资源。Docker利用这一机制,对容器的CPU、内存、磁盘IO等资源进行了精确的控制和限制。具体来说:

  1. CPU资源限制
    • 通过--cpus参数设置容器可以使用的CPU核心数。
    • 通过--cpu-shares参数设置容器在CPU资源竞争中的权重。
    • 通过--cpu-period--cpu-quota参数设置容器在每个CPU调度周期内的使用时间上限。
  2. 内存资源限制
    • 通过--memory参数设置容器可以使用的最大内存量。
    • 通过--memory-swap参数设置容器可以使用的内存和swap空间的总和。
  3. 磁盘IO资源限制
    • 通过--device-read-bps--device-write-bps参数限制容器对特定设备的读写速度。
    • 通过--blkio-weight参数设置容器在磁盘IO资源竞争中的权重。
3. 其他资源封闭措施

除了上述通过命名空间和控制组实现的资源封闭和限制外,Docker还采取了以下措施来确保容器的安全性和稳定性:

  1. 文件系统隔离:Docker使用Union File System技术,将容器的文件系统与宿主机的文件系统隔离开来。容器内的文件操作只会在其自己的可写层中进行,不会影响到宿主机的文件系统。
  2. 进程隔离:由于容器内的进程运行在独立的PID命名空间中,因此它们与宿主机上的其他进程相互隔离。这保证了容器内的进程不会干扰到宿主机的进程调度和运行。
  3. 网络隔离:通过Docker的网络驱动(如Bridge、Overlay等),实现了容器与宿主机、容器与容器之间的网络隔离。这使得容器能够拥有自己独立的网络环境,提高了网络的安全性。

综上所述,Docker通过命名空间和控制组等技术手段,实现了对CPU、内存、磁盘IO等多种资源的封闭和限制。这些措施不仅提高了容器的安全性和稳定性,还为运维人员提供了更灵活的资源管理手段。

posted @ 2025-02-18 12:53  黄嘉波  阅读(60)  评论(0)    收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波