我尝试使用docker容器,其中只能从正在运行的容器中访问特定的IP地址。 iptables只在特许的docker容器中工作。但是比用户可以自己更改iptables。 一个好主意是使用dockerfile和iptables创建一个docker镜像。但是在创建图像时没有特权的选项。 任何人都知道如何解决这个问题?
最佳
答案 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 ...
这些命令将运行而不在容器内运行的命令的功能限制。