如何限制docker容器在现有iproute2-style网络名称空间中运行?
ip netns exec mynetns docker-compose up
不起作用(毫不奇怪)。
编辑评论:
$ docker network create --opt com.docker.network.bridge.name=dockerbridge dockernet
$ ip link set dockerbridge netns mynetns
RTNETLINK answers: Invalid argument
尝试将docker网络的接口分配给名称空间将不起作用。
我确实想确保没有流量泄漏-所以我想确保在启动容器之前一切都已设置好。因此,等待容器启动,然后将veth注入其netnet以链接到mynetns似乎很脆弱。
正在尝试将来自dockerbridge的流量路由到mynetns的外部ve,或从mynetns的外部veth路由。
编辑2:
对我来说,一个解决方案是使用
docker network create --opt com.docker.network.bridge.name=dockerbridge dockernet
并使用iproute2工具将来自dockerbridge的所有流量路由到mynetns的外层。 我必须调整docker-compose.yml使其包含
somecontainer:
dns: 8.8.8.8
networks:
default:
external:
name: dockernet
ip route的table选项很有帮助,所以我可以为我想连接到mynetns的docker-bridge设置第二个默认网关。