如何将多个Dockers连接到单个主机中的不同桥接器? [英] How to connect multiple Dockers to different bridges in a single host machine?
问题描述
是否可以将多个Dockers(在我的情况下,同一Docker的多个实例)连接到单个主机中的不同桥接器?
Is it possible to connect multiple Dockers (in my case, multiple instances of the same docker) each to different bridge in a single host machine?
第三方解决方案像管道建议首先寻找本地的方法。
3rd party solutions like pipework recommends first looking for "native" ways.
类似的东西:
当我启动2个实例时,第一次使用默认docker0桥,而第二个被指示使用br1(不同的IP范围):
When I start 2 instance, the 1st use by default docker0 bridge, while the 2nd is instructed to use br1 (different IP range) :
sudo docker run -t -i me/tester:latest /bin/bash
sudo docker --bridge=br1 run -t -i me/tester:latest /bin/bash
导致来自Doker0的IP范围相同:
results in both having the same IP range from Doker0:
root@2a259a88d9c8:/# ip a
...
73: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 86:d7:cc:c8:b7:e8 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.32/16 scope global eth0
-
root@0b849a5398af:/# ip a
...
79: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 26:84:ad:6c:70:6b brd ff:ff:ff:ff:ff:ff
inet 172.17.0.34/16 scope global eth0
valid_lft forever preferred_lft forever
推荐答案
这是如何使用新的本机码头网络完成的:
This is how it is done using the new native docker networking:
使用预定义的子网创建码头网络(linux桥)
docker network create --subnet=192.168.10.0/24 net1
docker network create --subnet=192.168.20.0/24 net2
docker network create --subnet=192.168.30.0/24 net3
创建的网络对应于linux网桥
brctl show
创建点击界面
sudo ip tuntap add dev tap1 mode tap
sudo ip tuntap add dev tap2 mode tap
sudo ip tuntap add dev tap3 mode tap
并加入到桥梁
sudo brctl addif br-a24f2eb2e054 tap1
sudo brctl addif br-d28c0759c37a tap2
sudo brctl addif br-d9512f62e471 tap3
启动您的容器
sudo docker run -itd --name=c1 phusion/baseimage
sudo docker run -itd --name=c2 phusion/baseimage
sudo docker run -itd --name=c3 phusion/baseimage
连接容器到网络
Connecting containers to network
docker network connect net1 c1
docker network connect net2 c2
docker network connect net3 c3
验证每个容器是否连接到其网络
docker network inspect net1
docker network inspect net2
docker network inspect net3
已连接的容器从相应的网络子网获取他们的IP
docker exec c1 ip a s eth1
docker exec c2 ip a s eth1
docker exec c3 ip a s eth1
断开网络连接容器
docker network disconnect net1 c1
docker network disconnect net2 c2
docker network disconnect net3 c3
这篇关于如何将多个Dockers连接到单个主机中的不同桥接器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!