文章目录
- Docker容器隔离
- 1.namespace-进程通信限制
- [2. cgroups-资源限制](#2. cgroups-资源限制)
- 测试时注意
- 总结
✨✨✨学习的道路很枯燥,希望我们能并肩走下来!
编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。

本文开始
Docker容器隔离
1.namespace-进程通信限制
命名空间简介:
命名空间是 Linux 内核提供的一种机制,用于将系统资源(如进程、网络、文件系统等)隔离开来,使得在一个命名空间中的资源对其他命名空间不可见或不可访问。
namespace :是 linux 中用来隔离进程的手段,容器就是使用该技术来进行隔离的。
可以把进程当做是对讲机,而 namespace 就是频段。两个对讲机(进程)要互相通信就需要调整到相同的频段上(namespace)。
namespace:进程间通信隔离
bash
# 1.启动一个容器
# 2. 进入虚拟文件系统,查看进程信息
# proc文件夹下会有多个名称是数字的文件夹-每个数字文件夹就是一个进程
cd /proc/5131
# 3. 进入进程信息文件夹,包含容器中各种命名空间
cd ns
进程文件夹命名空间信息:
根据命名空间隔离的内容如下:
ipc: 进程间通信命名空间
mnt:文件挂载命名空间
net: 网络命名空间
pid: 进程id名称空间
user: 用户名称空间
故障注入可以使用到命名空间
2. cgroups-资源限制
cgroups :是 linux 用来限制进程使用资源的手段。容器也是利用这个技术进行资源的隔离。
bash
#查看当前系统的 cgroups
mount -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
bash
# 在容器运行时,直接使用参数指定资源限制
# 限制内存512兆,cpu两核
docker run --name=nginx -d -m 512m --cpus=2 nginx
【注】k8s通过cgroups计算剩余资源,编写简单脚本,计算剩余资源,但也是使用的cgroups
cgroups四大功能
- 资源限制:可以对任务使用的资源总额进行限制。
- 优先级分配:通过分配cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行 优先级。
- 资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等。
- 任务控制:cgroups可以对任务执行挂起,恢复等操作。
测试时注意
| 概念 | 作用 | 测试场景 |
|---|---|---|
| Namespace | 隔离环境 | 多版本并行测试、避免端口/进程冲突 |
| Cgroups | 限制资源 | 模拟弱机环境、防止资源耗尽、稳定性测试 |
| 场景 | 你能做什么 |
|---|---|
| 故障注入 | 人为限制内存/CPU,观察系统降级或告警是否正常 |
| 性能测试 | 确保测试容器不会吃光宿主机资源影响其他任务 |
| 日志/监控 | 通过 /sys/fs/cgroup/ 查看容器实际资源消耗(高级) |
总结
✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

