我尝试使用一个docker容器,只有特定的IP地址可以从运行的容器中访问。
iptables仅在特权docker容器中起作用。但是用户可以更改iptables本身。
一个好的想法是创建一个带有dockerfile和iptables的docker镜像。但是,在创建映像时没有特权权限选项。
有人有解决这个问题的想法吗?
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=$(docker inspect -f '{{.State.Pid}}' example)
然后使用 nsenter
在容器的网络命名空间内运行命令:
nsenter -t $pid -n iptables ...
这些命令将在容器内运行,不受功能限制。