Docker容器的跨主机访问

使用网桥实现跨网段访问

Docker容器的跨主机访问_第1张图片

主机1 :192.168.22.101  主机2:192.168.22.102

安装网桥管理工具#sudo apt-get install bridge-until

配置网卡地址# sudo vim /etc/network/interfaces

配置其中一块网卡的网络参数,另一块网卡配置参数一样,这里不在演示

Docker容器的跨主机访问_第2张图片

重新启动网卡

# sudo /etc/init.d/networking restart

查看网络配置,发现eth0已经没有地址br1有地址

Docker容器的跨主机访问_第3张图片

在另一台主机上执行相同的操作,这里我们就不演示了

编辑docker的配置文件实现使用br1来启动docker

# sudo vim /etc/default/docker

--fixed-cidr 限定ip地址的分配范围

192.168.22.102配置

Docker容器的跨主机访问_第4张图片

192.168.22.101配置

Docker容器的跨主机访问_第5张图片

我们在192.168.22.101上启动一个容器,查看下ip地址,是否在我们分配的范围内

Docker容器的跨主机访问_第6张图片

我们在192.168.22.102上在启动一个容器,看下ip是否在我们分配的范围内

Docker容器的跨主机访问_第7张图片

测试一下这两个容器是否可以互联,发现完全没有问题。

Docker容器的跨主机访问_第8张图片

open-vswitch实现跨网段访问

open vswitch是什么?

open vswitch是一个高质量的,多层虚拟交换机,简称ovs。

拓扑

Docker容器的跨主机访问_第9张图片

安装open vswitch

#sudo apt-get install -y openvswitch-switch

建立ovs网桥

#sudo ovs-vsctl add-br obr0

添加gre连接

# sudo ovs-vsctl add-port obr0 gre0

配置docker容器虚拟网桥,其中romote_ip指定对方ip

#sudo ovs-vsctl set interface gre0 type=gre  options:romote_ip=192.168.22.101

查看一下我们的ovs配置

#sudo ovs-vsctl show

Docker容器的跨主机访问_第10张图片

创建br0桥接到obr0

sudo brctl addbr br0

sudo ifconfig br0 192.168.200.1 netmask255.255.255.0

sudo brctl addif br0 obr0

Docker容器的跨主机访问_第11张图片

编辑docker的配置文件

# sudo vim /etc/default/docker

wKiom1XAy32jZBxJAAA5mNKdLFQ024.jpg

向两端添加去对方的默认路由

# sudo ip route add 192.168.100.0/24 via192.168.22.101 dev eth0

192.168.22.102上启动一个容器

 

Docker容器的跨主机访问_第12张图片

192.168.22.101上启动一个容器

Docker容器的跨主机访问_第13张图片

测试一下网络,发现两端是可以连通的

Docker容器的跨主机访问_第14张图片

weave实现跨网段访问

weave是什么呢?weave创建了一个虚拟网络,用来连接部署在多台机器上的docker容器

Docker容器的跨主机访问_第15张图片

安装weave

# sudo wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
# sudo chmod a+x /usr/local/bin/weave

启动weave

# weave launch

Docker容器的跨主机访问_第16张图片

主机ip地址192.168.22.102  192.168.22.105

启动第二台主机的weave 并指定对方的ip地址

#weavelaunch 192.168.22.102

在一台主机上启动一个容器

weave run192.168.200.2/24 -it --name dk1 192.168.22.103:5000/ubuntu

sudo dockerattach dk1

Docker容器的跨主机访问_第17张图片

在另一台主机上启动一个容器

# weave run192.168.200.3/24 -it --name dk2 192.168.22.103:5000/ubuntu

sudo dockerattach dk2

Docker容器的跨主机访问_第18张图片

测试一下网络

Docker容器的跨主机访问_第19张图片