Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用现有iproute2网络命名空间启动docker容器_Linux_Docker_Networking_Docker Compose - Fatal编程技术网

Linux 使用现有iproute2网络命名空间启动docker容器

Linux 使用现有iproute2网络命名空间启动docker容器,linux,docker,networking,docker-compose,Linux,Docker,Networking,Docker Compose,如何限制docker容器在现有iproute2样式的网络命名空间内运行 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 ar

如何限制docker容器在现有iproute2样式的网络命名空间内运行

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注射到它们的网络中以链接到mynetns似乎很脆弱。
我正在尝试从dockerbridge到mynetns的外部兽医的交通路线,也许这是一种方式

编辑2:
我的一个解决方案是使用

docker network create --opt com.docker.network.bridge.name=dockerbridge dockernet
并使用iproute2工具将所有流量从dockerbridge路由到mynetns的outer veth。 我必须调整docker-compose.yml以包括

somecontainer:
   dns: 8.8.8.8

networks:
  default:
    external:
      name: dockernet

ip路由的表选项很有帮助,所以我可以为我想要连接到mynetns的docker网桥设置第二个默认网关

使用网桥驱动程序创建docker网络,并将此网络的docker网络接口分配给iproute2网络命名空间。然后使用此docker网络作为it网络运行docker compose。或者创建一个tun设备并将其连接到IPRout2网络命名空间,并创建一个到docker网络接口的网桥。