有三个不同的虚拟机, 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。
虽然,流量仍然通过,网络分区不被再现。
如何正确阻止服务容器的流量?
答案 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 && apt-get install -y iptables