阻止docker工访问特定的IP

我希望我的EC2实例具有基于IAM的权限,但不希望该实例上的docker容器具有相同的权限。 我相信它应该足以阻止访问魔术IP 169.254.169.254 。 是否足够运行: iptables -I DOCKER -s 169.254.169.254 -j DROP

我是否也需要使用--icc=false或者--iptables=falseconfiguration我的--icc=false守护进程?

最后得到这个工作,你需要在主机上添加这个规则:

1)当出站到169.254.169.254端口80或443时丢弃docker桥包。

 sudo iptables -I FORWARD -i docker0 -d 169.254.169.254 \ -p tcp -m multiport --dports 80,443 -j DROP 

现在,如果我尝试在容器内连接:

 $ sudo docker run -it ubuntu bash root@8dc525dc5a04:/# curl -I https://www.google.com HTTP/1.1 200 OK root@8dc525dc5a04:/# curl -I http://169.254.169.254/ # <-- hangs indefinitely, which is what we want 

到特殊IP的连接仍然在主机上工作,但不能从容器内部工作。

注意:我的用例是针对Google Compute Engine,并阻止Docker容器访问169.254.169.254上的元数据服务器,同时允许针对同一IP的DNS和其他查询。 您的里程可能在AWS上有所不同。