从特权 Docker 容器访问主机 iptables 和 ufw

Access host iptables and ufw from privileged Docker container

我想在 host OS 上访问 iptablesufwreboot 运行ning (Snappy Ubuntu Core 18.04)来自 Docker 容器(运行在同一主机上)。

需要什么卷或 Docker 容器参数才能实现?容器可以 运行 具有 root 用户和特权访问权限。

我完全了解这里的安全隐患,但在这种情况下安全性不是问题。

使用 SSH

您可以 运行 带有 --net=host 选项的容器,然后可以使用 ssh 从容器连接到主机。

在主机模式下,可以从容器连接到主机上的端口22。

没有 SSH

如果您不想使用 ssh,this post 中介绍了一种方法。您需要使用 --privileged--pid=host 运行 容器,然后使用 nsenter 命令。使用此命令,您可以从主机获得交互式 shell。您也可以只 运行 想要的命令。

$ sudo docker run --privileged --pid=host -it alpine:3.8 \
nsenter -t 1 -m -u -n -i sh
$ sudo docker run --privileged --pid=host -it alpine:3.8 \
nsenter -t 1 -m -u -n | sudo iptables -S

请注意,如果您使用的是 MacOS 或 Windows,docker 在管理程序中 运行ning,因此使用它,您将处于 shell管理程序。