在 docker 容器在其他 docker 容器中运行的环境中(通过安装 docker 套接字,而不是以特权身份运行),有没有办法操纵网络来执行以下操作:
- 引入延迟
- 丢弃数据包的百分比
- 带宽上限
我只对来自容器的 docker-to-docker 流量感兴趣,我开始使用 docker-py(在环境中)。我不关心操纵其他流量,例如 docker 到 localhost 或 docker 到 Internet。在许多方面,只操纵 docker-docker 网络流量是理想的。
即使在 docker 容器中,当它在以下情况之一下运行时,也有很多方法可以做到这一点:
- 特权模式
- 传递
--cap-add=NET_ADMIN
标志运行时
一些实用程序(iptables、tc 和使用它们实现的各种库)允许这样做。但是所有这些都需要比我的环境更高的权限,因为“主机”容器不是以特权模式启动的。
我无法控制系统配置。我必须在另一个容器中运行这些容器,而不是在特权模式下启动。如果我可以更改它会很简单,因为我可以使用上面列出的任何实用程序。
所有容器都连接到由docker network create foobar
.
我的应用程序是用 Python3.4 编写的,在 OSX 上使用 docker-py。
- 有没有办法操纵 docker 到 docker 的网络特性来引入延迟、丢包等?