在Docker中模拟不同的网络条件

use*_*819 6 docker

使用在Docker容器中运行的Selenium + Chrome运行测试(主机为Ubuntu)

需要为每个容器模拟不同的网络状况,包括进出带宽,延迟,防火墙。我可以在每个容器上使用https://github.com/tylertreat/Comcast之类的工具,它不会影响其他容器的联网条件吗?

有更好的方法吗?

我看到了这个https://github.com/docker/docker/issues/37,但不清楚如何使用它。

adr*_*lzt 5

我使用此命令仅影响一个容器的网络状况:

sudo nsenter -t PID -n comcast --latency=2000 --target-port=9200
Run Code Online (Sandbox Code Playgroud)

PID需要是容器的PID之一

nsenter ... -n在容器的网络命名空间中输入


use*_*819 2

发现这似乎只是工作,

在 docker 镜像中使用 --privileged=true 运行 docker 可以使用任何能够塑造网络流量的程序,对我有用 comcast、tc 和 iptables

每个docker都有自己的网络配置文件,并且一个容器不会影响其他容器。

另请参阅 https://github.com/tylertreat/comcast/issues/48#issuecomment-326088625