AJN*_*AJN 5 networking docker ubuntu-14.04
是否可以将多个Docker(在我的情况下,同一个docker的多个实例)连接到一台主机中的不同网桥?
管道工程等第三方解决方案建议首先寻找"原生"方式.
像这样的东西:

当我启动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
Run Code Online (Sandbox Code Playgroud)
结果是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
Run Code Online (Sandbox Code Playgroud)
-
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
Run Code Online (Sandbox Code Playgroud)
AJN*_*AJN 11
这是使用新的本机docker网络完成的方式:
使用预定义的子网创建docker networks(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
Run Code Online (Sandbox Code Playgroud)
创建的网络对应于Linux网桥
brctl show
Run Code Online (Sandbox Code Playgroud)
创建分接界面
sudo ip tuntap add dev tap1 mode tap
sudo ip tuntap add dev tap2 mode tap
sudo ip tuntap add dev tap3 mode tap
Run Code Online (Sandbox Code Playgroud)
并加入他们的桥梁
sudo brctl addif br-a24f2eb2e054 tap1
sudo brctl addif br-d28c0759c37a tap2
sudo brctl addif br-d9512f62e471 tap3
Run Code Online (Sandbox Code Playgroud)
开始你的容器
sudo docker run -itd --name=c1 phusion/baseimage
sudo docker run -itd --name=c2 phusion/baseimage
sudo docker run -itd --name=c3 phusion/baseimage
Run Code Online (Sandbox Code Playgroud)
将容器连接到网络
docker network connect net1 c1
docker network connect net2 c2
docker network connect net3 c3
Run Code Online (Sandbox Code Playgroud)
验证每个容器是否已连接到其网络
docker network inspect net1
Run Code Online (Sandbox Code Playgroud)
docker network inspect net2
Run Code Online (Sandbox Code Playgroud)
docker network inspect net3
Run Code Online (Sandbox Code Playgroud)
连接的容器从其相应的网络子网获取其IP
docker exec c1 ip a s eth1
Run Code Online (Sandbox Code Playgroud)
docker exec c2 ip a s eth1
Run Code Online (Sandbox Code Playgroud)
docker exec c3 ip a s eth1
Run Code Online (Sandbox Code Playgroud)
将容器与网络断开连接
docker network disconnect net1 c1
docker network disconnect net2 c2
docker network disconnect net3 c3
Run Code Online (Sandbox Code Playgroud)
删除网络
docker network rm net1
docker network rm net2
docker network rm net3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6920 次 |
| 最近记录: |