blade create docker network

介绍

容器内网络实验场景,同基础资源的网络场景

命令

支持的网络场景命令如下:
    blade create docker network delay 容器网络延迟,同 [blade create network delay](blade create network delay.md)
    blade create docker network loss 容器网络丢包,同 [blade create network loss](blade create network loss.md)
    blade create docker network dns 容器内域名访问异常,同 [blade create network dns](blade create network dns.md)

参数

除了上述基础场景各自所需的参数外,在 docker 环境下,还支持的参数如下:
1
--container-id string 目标容器 ID
2
--docker-endpoint string Docker server 地址,默认为本地的 /var/run/docker.sock
3
--image-repo string chaosblade-tool 镜像仓库地址,默认是从 `registry.cn-hangzhou.aliyuncs.com/chaosblade`
Copied!

案例

对 nginx 容器 80 端口做访问延迟 3 秒,执行命令如下:
1
blade create docker network delay --time 3000 --interface eth0 --local-port 80 --container-id 5239e26f6329
Copied!
第一次会拉取 chaosblade-tool 镜像,可能会慢一些。返回 {"code":200,"success":true,"result":"fc3a1b0b4295e47f"} 表示执行成功,可以看到新启动了一个名字为 5239e26f6329-delay 的容器,通过 sidecar 方式,复用目标容器网络,执行实验。
在本机访问该容器映射出的端口服务,比如映射的端口为 0.0.0.0:32768->80/tcp,可以看出发生延迟:
1
[[email protected] ~]# time curl localhost:32768
2
real 0m9.001s
3
user 0m0.004s
4
sys 0m0.002s
Copied!
此处延迟 9 秒的原因是涉及到多次 80 端口访问。
也可以在同一网段下的另外一台容器内访问目标容器的 80 服务,同样能验证效果:
1
bash-4.4# time curl 172.17.0.2:80
2
real 0m9.005s
3
user 0m0.004s
4
sys 0m0.001s
Copied!
执行以下命令可销毁实验:
1
blade destroy fc3a1b0b4295e47f
Copied!
启动的 sidecar 容器会被销毁,网络恢复。可以通过上述方法再次验证。
1
[[email protected] ~]# time curl localhost:32768
2
real 0m0.011s
3
user 0m0.003s
4
sys 0m0.002s
Copied!

常见问题

Q:执行命令报错: {"code":604,"success":false,"error":"RTNETLINK answers: File exists\n exit status 2 exit status 1"} A:网络演练场景已存在,可以使用 docker ps | grep chaosblade 来查看正在运行的 sidecar 容器
Last modified 4d ago