作者信息: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 @   黄嘉波  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
历史上的今天:
2024-02-18 在k8S中,容器内日志是怎么采集的?
2024-02-18 在k8S中,Helm优缺点是什么?
2024-02-18 在k8S中,flannel和calico的作用和区别是什么?
2024-02-18 在k8S中,QoS作用是什么?
2024-02-18 在k8S中,Master节点高可用是如何做的?
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波
点击右上角即可分享
微信分享提示