在运维工作中,docker封闭了哪些资源?
在运维工作中,Docker主要通过两种关键技术——命名空间(Namespaces)和控制组(cgroups)——来实现资源的封闭和隔离。以下是Docker封闭的主要资源类型及其具体实现方式:
1. 通过命名空间实现资源隔离
命名空间是Linux内核提供的一种资源隔离方案,它使得一组进程能够拥有自己独立的系统资源视图,从而避免与其他进程产生冲突。Docker利用这一机制,为每个容器提供了独立的运行环境。具体来说,Docker使用了以下几种命名空间:
- PID命名空间:确保每个容器都有自己独立的进程ID列表,容器内的进程不会与宿主机或其他容器的进程相互干扰。
- 网络命名空间:为每个容器提供独立的网络接口和虚拟IP地址,使得容器能够拥有自己独立的网络环境,实现网络资源的封闭。
- 挂载命名空间:隔离文件系统的挂载点,让不同容器有不同的文件视图。这保证了容器内对文件系统的操作不会影响到宿主机或其他容器。
此外,Docker还使用了UTS命名空间(提供主机名和域名隔离)、IPC命名空间(提供信号量、消息队列和共享内存隔离)等,以实现更全面的资源隔离。
2. 通过控制组实现资源限制
控制组(cgroups)是Linux内核提供的一种机制,用于限制、记录和隔离进程组所使用的物理资源。Docker利用这一机制,对容器的CPU、内存、磁盘IO等资源进行了精确的控制和限制。具体来说:
- CPU资源限制:
- 通过
--cpus
参数设置容器可以使用的CPU核心数。 - 通过
--cpu-shares
参数设置容器在CPU资源竞争中的权重。 - 通过
--cpu-period
和--cpu-quota
参数设置容器在每个CPU调度周期内的使用时间上限。
- 通过
- 内存资源限制:
- 通过
--memory
参数设置容器可以使用的最大内存量。 - 通过
--memory-swap
参数设置容器可以使用的内存和swap空间的总和。
- 通过
- 磁盘IO资源限制:
- 通过
--device-read-bps
和--device-write-bps
参数限制容器对特定设备的读写速度。 - 通过
--blkio-weight
参数设置容器在磁盘IO资源竞争中的权重。
- 通过
3. 其他资源封闭措施
除了上述通过命名空间和控制组实现的资源封闭和限制外,Docker还采取了以下措施来确保容器的安全性和稳定性:
- 文件系统隔离:Docker使用Union File System技术,将容器的文件系统与宿主机的文件系统隔离开来。容器内的文件操作只会在其自己的可写层中进行,不会影响到宿主机的文件系统。
- 进程隔离:由于容器内的进程运行在独立的PID命名空间中,因此它们与宿主机上的其他进程相互隔离。这保证了容器内的进程不会干扰到宿主机的进程调度和运行。
- 网络隔离:通过Docker的网络驱动(如Bridge、Overlay等),实现了容器与宿主机、容器与容器之间的网络隔离。这使得容器能够拥有自己独立的网络环境,提高了网络的安全性。
综上所述,Docker通过命名空间和控制组等技术手段,实现了对CPU、内存、磁盘IO等多种资源的封闭和限制。这些措施不仅提高了容器的安全性和稳定性,还为运维人员提供了更灵活的资源管理手段。
标签:
黄嘉波-笔记汇总-Docker
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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节点高可用是如何做的?