Docker- 故障注入(混沌工程)测试(简单过程阐述)

文章目录

  • 容器的故障注入测试
    • [1. 启动一个nginx容器](#1. 启动一个nginx容器)
    • [2. 切换到容器的网络命名空间](#2. 切换到容器的网络命名空间)
    • [3. 进行故障注入](#3. 进行故障注入)
  • 总结

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

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



本文开始

容器的故障注入测试

1. 启动一个nginx容器

bash 复制代码
docker run --name=nginx -d

使用docker inspect命令查询当前容器的 PID

bash 复制代码
docker inspect

2. 切换到容器的网络命名空间

目前看业务需要测试什么空间,可以选择,这里以切换到网络命名空间为例;

使用nsenter -t [pid] -n 切换到容器的网络名称空间

【注】

1.nsenter中的ns就是namespace

2.切换后,只有网络命名空间在容器网络中

3.仅切换网络视角,看到容器的网络设备信息,其他资源(如文件系统、进程列表)仍然是宿主机的,因为你只进入了 -n(网络命名空间),没进其他 namespace。

bash 复制代码
# 根据pid切换到网络命名空间,这里pid是5131
nsenter -t 5131 -n
# 查看网络设备信息,只能查看容器的网络设备信息
ifconfig
# 查看其他进程信息, ps aux 显示的是整个宿主机的所有进程
ps aux

【重点】切换某个命名空间成功后,看到的就是容器中的对应信息,而不是宿主机的信息;

3. 进行故障注入

简单示例说明,具体的可以查看相关详细资料;

使用iptables/tc等命令进行故障注入,两种命令都可以修改内核网络层;

工具 全称 作用 故障注入能力
iptables IP Tables Linux 内核防火墙工具 模拟 网络中断、拒绝连接、丢包(部分)
tc Traffic Control Linux 流量控制工具 模拟 网络延迟、丢包、带宽限制、乱序

示例:

bash 复制代码
# 故障注入-拒绝所有连接数据包
iptables
# 模拟用户在 4G/跨国网络下访问服务变慢
# 在容器或宿主机上执行(需 root 权限)
tc qdisc add dev eth0 root netem delay 300ms

参数说明:

eth0:网络接口(容器内通常是 eth0,宿主机可能是 ens33 等)

delay 300ms:所有出站流量增加 300 毫秒延迟

部分 说明
tc Traffic Control 的缩写,Linux 内核提供的流量控制工具,用于管理网络队列、限速、模拟网络异常等。
qdisc Queueing Discipline(排队规则),即"如何处理出站数据包的队列"。 这是 tc 的核心对象,每个网络接口都有一个默认 qdisc(通常是 pfifo_fast)。
add 添加一个新的 qdisc 规则。
dev eth0 指定操作的网络设备(interface),这里是 eth0(容器内通常为 eth0,宿主机可能是 ens33enp0s3 等)。
root 表示将这个 qdisc 作为根规则(替换默认队列),所有从该接口发出的数据包都会经过它。
netem Network Emulator(网络模拟器),是 tc 的一个 qdisc 类型,专门用于模拟各种网络问题: 延迟(delay)、丢包(loss)、乱序(reorder)、重复(duplicate)等。
delay 300ms 具体模拟的行为:给所有出站数据包增加 300 毫秒的固定延迟。

总结

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

相关推荐
寂柒24 分钟前
线程同步与互斥——生产者、消费者模型
linux
不做超级小白25 分钟前
执行docker命令时自动启动Docker Desktop?一个小工具让开发体验更丝滑
windows·docker
222you25 分钟前
Ubuntu当中的Docker安装和镜像管理
ubuntu·spring cloud·docker
雾岛听蓝32 分钟前
C文件操作与系统IO
linux·c语言·开发语言·经验分享·笔记·算法
coderwei12334 分钟前
Ubantu服务器构建openclaw并接入飞书
运维·服务器
开开心心就好1 小时前
跨平台高速下载工具,支持浏览器功能强大
运维·服务器·windows·pdf·旅游·媒体·1024程序员节
心易行者1 小时前
别再说“在我的机器上能跑”了!Docker 入门指南,专治各种环境不服
运维·人工智能·docker·容器
盐焗西兰花1 小时前
鸿蒙学习实战之路-Share Kit系列(7/17)-自定义分享面板操作区
linux·学习·harmonyos
zhim001 小时前
【保姆级教程】使用 Docker 部署 PostgreSQL + pgvector(含踩坑指南)
linux·docker
开朗觉觉2 小时前
将json字符串转换为json对象
linux·服务器·python