限制网络访问,但允许运行Docker容器的特定IP

时间:2015-02-09 12:59:54

标签: docker

我尝试使用docker容器,其中只能从正在运行的容器中访问特定的IP地址。 iptables只在特许的docker容器中工作。但是比用户可以自己更改iptables。 一个好主意是使用dockerfile和iptables创建一个docker镜像。但是在创建图像时没有特权的选项。 任何人都知道如何解决这个问题?

最佳

1 个答案:

答案 0 :(得分:3)

每个泊坞窗容器都有一个唯一的IP地址,因此如果您想允许容器的地址为172.17.0.21并且您希望它只能 访问地址8.8.8.8,那么您可以这样做类似的东西:

iptables -A FORWARD -s 172.17.0.21 -d 8.8.8.8 -j ACCEPT
iptables -A FORWARD -s 172.17.0.21 -j REJECT --reject-with icmp-host-prohibited

也可以使用nsenter命令修改无内容容器中的iptables规则。例如,如果您启动Docker容器:

docker run --name example -d myimage

您可以像这样获取该容器的PID:

pid=$(docker inspect -f '{{.State.Pid}}' example)

然后使用nsenter在该容器的网络命名空间内运行命令:

nsenter -t $pid -n iptables ...

这些命令将运行而不在容器内运行的命令的功能限制。