gpt4 book ai didi

networking - 如何将多个 Docker 连接到单个主机中的不同网桥?

转载 作者:IT老高 更新时间:2023-10-28 21:42:21 32 4
gpt4 key购买 nike

是否可以将多个 Docker(在我的情况下,同一个 docker 的多个实例)分别连接到单个主机中的不同网桥?

pipework 等第三方解决方案建议首先寻找“原生”方式。

类似的东西:

enter image description here

当我启动 2 个实例时,第一个默认使用 docker0 网桥,而第二个被指示使用 br1(不同的 IP 范围):

sudo docker run -t -i me/tester:latest /bin/bash
sudo docker --bridge=br1 run -t -i me/tester:latest /bin/bash

导致两者都具有来自 Doker0 的相同 IP 范围:

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

最佳答案

这是使用新的本地 docker 网络完成的方式:

使用预定义的子网创建 docker 网络(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

enter image description here

创建点击界面

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

将容器连接到网络

docker network connect net1 c1
docker network connect net2 c2
docker network connect net3 c3

验证每个容器是否已连接到其网络

docker network inspect net1

enter image description here

docker network inspect net2

enter image description here

docker network inspect net3

enter image description here

连接的容器从其对应的网络子网获取 IP

docker exec c1 ip a s eth1

enter image description here

docker exec c2 ip a s eth1

enter image description here

docker exec c3 ip a s eth1

enter image description here

断开容器与网络的连接

docker network disconnect net1 c1
docker network disconnect net2 c2
docker network disconnect net3 c3

删除网络

docker network rm net1
docker network rm net2
docker network rm net3

关于networking - 如何将多个 Docker 连接到单个主机中的不同网桥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649545/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com