Linux 网络 - 通过网关将 Docker 容器传送到远程主机,无需使用路由添加



我正在努力解决网络问题。

我有一个 Docker 实例在172.17.0.14上运行,其中包含 172.18.0.0/24 网络上的所有容器。使用Vagrant,您将执行类似sudo route add -net 172.18.0.0 netmask 255.255.255.0 gw 172.17.0.14来访问子网的操作。

但是,当我在容器内运行route add时,我得到

SIOCADDRT:不允许操作

我能做什么?有没有像索卡特这样的东西?我不想添加 NETCAP 功能。

您需要正确的权限。显然,至少有两种方法可以做到这一点:

一个从这里:

docker exec --privileged container ip route add default via 172.17.0.14 dev eth0

另一种选择是从此处公开网络:

pid=($sudo docker inspect -f '{{.State.Pid}}' container)
sudo mkdir -p /var/run/netns
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid
sudo ip netns exec $pid ip route add default via 172.17.0.14

最新更新