news 2026/5/1 9:08:18

Docker容器隔离(namespace+cgroups)-底层原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker容器隔离(namespace+cgroups)-底层原理

文章目录

  • Docker容器隔离
  • 1.namespace-进程通信限制
  • 2. cgroups-资源限制
    • 资源隔离参数示例
    • 资源隔离使用方式
    • cgroups四大功能
  • 测试时注意
  • 总结

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

Docker容器隔离

1.namespace-进程通信限制

命名空间简介:

命名空间是 Linux 内核提供的一种机制,用于将系统资源(如进程、网络、文件系统等)隔离开来,使得在一个命名空间中的资源对其他命名空间不可见或不可访问。

namespace :是 linux 中用来隔离进程的手段,容器就是使用该技术来进行隔离的。

可以把进程当做是对讲机,而 namespace 就是频段。两个对讲机(进程)要互相通信就需要调整到相同的频段上(namespace)。

namespace:进程间通信隔离

# 1.启动一个容器# 2. 进入虚拟文件系统,查看进程信息# proc文件夹下会有多个名称是数字的文件夹-每个数字文件夹就是一个进程cd/proc/5131# 3. 进入进程信息文件夹,包含容器中各种命名空间cdns

进程文件夹命名空间信息:


根据命名空间隔离的内容如下:
ipc: 进程间通信命名空间
mnt:文件挂载命名空间
net: 网络命名空间
pid: 进程id名称空间
user: 用户名称空间

故障注入可以使用到命名空间

2. cgroups-资源限制

cgroups :是 linux 用来限制进程使用资源的手段。容器也是利用这个技术进行资源的隔离。

#查看当前系统的 cgroupsmount-t cgroups

cgroups: 资源隔离

资源隔离参数示例

资源类型Docker 参数示例作用
CPU--cpus=1.5--cpu-quota最多使用 1.5 个 CPU 核心
内存-m 2g--memory=2048m最多使用 2GB 内存,超了会被 kill
磁盘 IO--blkio-weight限制磁盘读写速度
进程数--pids-limit=100最多只能起 100 个进程

资源隔离使用方式

使用方式:在docker run启动容器时指定参数即可;如-m, -cpus
资源隔离一般限制内存和cpu

# 在容器运行时,直接使用参数指定资源限制# 限制内存512兆,cpu两核dockerrun --name=nginx -d -m 512m --cpus=2nginx

【注】k8s通过cgroups计算剩余资源,编写简单脚本,计算剩余资源,但也是使用的cgroups

cgroups四大功能

  1. 资源限制:可以对任务使用的资源总额进行限制。
  2. 优先级分配:通过分配cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行 优先级。
  3. 资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等。
  4. 任务控制:cgroups可以对任务执行挂起,恢复等操作。

测试时注意

概念作用测试场景
Namespace隔离环境多版本并行测试、避免端口/进程冲突
Cgroups限制资源模拟弱机环境、防止资源耗尽、稳定性测试
场景你能做什么
故障注入人为限制内存/CPU,观察系统降级或告警是否正常
性能测试确保测试容器不会吃光宿主机资源影响其他任务
日志/监控通过/sys/fs/cgroup/查看容器实际资源消耗(高级)

总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:54:06

Vue——vue3 之 数据字典管理

背景问题: 需要统一管理系统中的数据字典。 方案思考: 创建数据字典管理模块,统一管理枚举值和选项。 具体实现: 数据字典管理: // stores/modules/dict.js import { defineStore } from pinia import { ref } from…

作者头像 李华
网站建设 2026/4/30 8:43:57

如何将某个成员设置为管理员?看这里!

🙋能否将某个相册成员设置为管理员,协助我管理相册?👉支持的⬇️下面将介绍如何将某个成员设置为管理员:1️⃣打开土著相册小🍊序,点击目标相册,进入相册2️⃣点击底部按钮「管理」&…

作者头像 李华
网站建设 2026/5/1 5:54:51

Linux命令-lnstat(快速查找文件和目录)

🧭说明 locate 命令是 Linux 中一个用于快速查找文件和目录的工具,它通过搜索系统预先生成的文件名数据库来工作,速度非常快。下面我将详细介绍它的用法、与 find 命令的区别以及一些实用技巧。 🔍 locate 与 find 的区别 在深…

作者头像 李华
网站建设 2026/5/1 4:50:16

飞书助力clawdbot成为本土化的AI助手

飞书助力clawdbot成为本土化的AI助手 先看视频 废话少说,先看视频: clawdbot 简介 视频是用飞书pc端模拟手机端,来控制clawdbot的。 clawdbot已经火到了macmini涨价的地步,为什么我们用起来那么难? 看看主页说明中…

作者头像 李华
网站建设 2026/5/1 7:02:23

一个相当复杂的跨品牌电梯智能群控系统项目,涉及硬件改造、软件调试和系统集成。从多奥提供的详细清单和流程来看,用户很可能是电梯智能化改造项目的技术负责人或系统集成商,需要确保整个方案从准备到验收的顺利

现在需要我帮助梳理和优化这个技术方案,使其更具可操作性和系统性。我打算从项目全生命周期的角度,构建一个逻辑清晰、阶段分明的实施框架。 首先考虑的是项目前期准备阶段,这是整个项目的基础。根据我看到的搜索结果,现场勘察与…

作者头像 李华
网站建设 2026/5/1 8:58:47

Dropbear SSH Server - 工程级 Bug 修复方案

一、Critical 级别修复(立即修复) BUG #1: circbuffer.c 空指针解引用 问题位置: circbuffer.c:93-106 原始代码: void cbuf_readptrs(const circbuffer *cbuf,unsigned char **p1, unsigned int *len1, unsigned char **p2, unsigned int *len2) {*p1 = &cbuf->…

作者头像 李华