阻止其中一个docker swarm服务任务容器的流量

时间:2017-08-15 11:42:45

标签: docker rabbitmq docker-swarm

有三个不同的虚拟机, RabbitMQ 服务部署在全局模式中。 我的目标是阻止其中一个 RabbitMQ 服务容器的流量。 尝试使用iptables到Reproduce RabbitMQ network partition scenario

添加iptables链

iptables -A DOCKER-INGRESS -d 10.255.0.33 -p tcp --dport amqp -m state --state ESTABLISHED,RELATED -j DROP

在2个docker节点上运行 RabbitMQ 服务任务容器。   10.255.0.33 是来自docker service inspect输出的swarm覆盖网络的容器的ip。 虽然,流量仍然通过,网络分区不被再现。 如何正确阻止服务容器的流量?

1 个答案:

答案 0 :(得分:0)

假设您要阻止来自container_id所标识的容器的交通,

步骤2-3应该在容器内运行。

1)输入容器:

// async task
private async void ButtonClick()
{
   // update the text box
   textBlock.Text = "Start";

   // if we have to wrap some CPU work, dont do it in the implementation
   // use task run to call it.
   // So... lets do something on the thread pool
   // await the results, giving back the ui thread
   var aIntVal = await Task.Run(() => aMethod()); 
   // continue back on the UI thread and update the text box again
   textBlock.Text = aIntVal;
}

// Vanilla method to do stuff
private int aMethod()
{
   for (int i = 0; i < number; i++)
       // awesome calculations here
   return anotherIntVal;
}
如果您可以直接连接到Web,而不是在某些(公司)代理之后,则不需要

docker exec -it --privileged --env http_proxy=proxy_ip container_id bash

2)此步骤假定基础映像操作系统基于 Debian 。如果基于RED-HAT,请使用 yum 软件包安装程序的等效命令。如果是其他OS系列,请使用适当的软件包安装程序命令。

安装 iptables

--env http_proxy=proxy_ip

3)阻止进出虚拟IP为10.0.0.183的容器的流量

apt-get update &amp;&amp; apt-get install -y iptables