在docker容器在其他docker容器中运行的环境中(通过安装docker套接字,而不是以特权身份运行),是否有任何方法可以操纵网络来执行以下操作:
我只对来自容器的docker-to-docker流量感兴趣我从docker py(环境内部)开始。我不关心操纵其他流量,如docker到本地主机或docker到internet。在许多方面,只操纵docker docker网络流量是理想的。在
当docker容器在下列情况之一下运行时,即使在docker容器中,也有很多方法可以做到这一点:
--cap-add=NET_ADMIN
标志运行时一些实用程序(iptables、tc和使用它们实现的各种库)允许这样做。但是所有这些都需要比我的环境中可用的更高的权限,因为“主机”容器不是以特权模式启动的。在
我无法控制系统配置。我已经在另一个容器中运行这些容器,而不是在特权模式下启动。如果我可以改变它,因为我可以使用上面列出的任何工具。在
所有容器都连接到由docker network create foobar
创建的网络。在
我用Python3.4编写的应用程序使用的是OSX上的dockerpy。在
我知道现在已经很晚了,但是我发现了为什么我要寻找我自己问题的答案。。。(不过,它确实需要特权,但认为它可能还是有用的)
可以使用tc命令在容器之间引入延迟。为 例如,如果ping时间为5ms,则通过运行以下命令:
现在ping大约为1005ms
要删除延迟,请运行以下命令:
^{pr2}$可以使用iptables命令模拟网络的完全故障,因此以下命令将阻止所有到IP地址192.168.1.202的流量:
要再次解除阻止,请使用:
相关问题 更多 >
编程相关推荐