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 毫秒的固定延迟。

总结

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

相关推荐
M78佐菲4 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
Brilliantwxx4 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
BullSmall5 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
不怕犯错,就怕不做5 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
richdata5 小时前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策
harmony&5 小时前
Docker 容器技术从入门到实战:容器、网络、存储与监控全解析
docker·云原生
weixin_416667966 小时前
【无标题】
运维·服务器·网络
一池秋_6 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
惜离殇6 小时前
从零开始的敲代码生活--Linux应用软件(文件操作基础1)
linux·c语言·文件操作·标准io
上海云盾-小余8 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络