Docker 网络进阶
2019-10-08 本文已影响0人
SkTj
单主机通信:none host bridge joined
多主机通信:overlay macvlan
扩展的多主机通信:flannel weave calico
![](https://img.haomeiwen.com/i9967595/5745055e99e9495e.png)
实验环境:101,104,105
overlay:需要一个key-value软件,包括etcd consul zookeeper
搭建overlay:可以理解为vlan
1、在1台主机上运行consul
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
2、另外两台主机修改docker配置文件:docker.service
--cluster-store=consul://xxx:xx --cluster-advertise=enp0s8:2376
![](https://img.haomeiwen.com/i9967595/da1b1f125f78ada2.png)
3、在两台的主机的其中1台上创建overlay网络
docker network create -d overlay ovnet1
4、用overlay运行容器
docker run -itd --name bbox1 --network ovnet1 busybox
不同的overlay间是相互隔离的
overlay也可以执行subnet
![](https://img.haomeiwen.com/i9967595/12c23e1851dfa832.png)
macvlan:性能优异,没有提供DNS服务,通信只能IP
1、在两台主机上搭建macvlan:要设置promiscuous Mode:Allow ALL
![](https://img.haomeiwen.com/i9967595/7a69ca141fda4cf0.png)
2、在两台主机上都创建macvlan网络
![](https://img.haomeiwen.com/i9967595/7878c6923b80c9d8.png)
3、为容器分配网络
![](https://img.haomeiwen.com/i9967595/4498a1989cb5bb7d.png)
一个网卡只能创建一个macvlan
![](https://img.haomeiwen.com/i9967595/c9b9a1e74076372a.png)
利用子网配置多个macvlan
![](https://img.haomeiwen.com/i9967595/82d6eacd684eeb99.png)
利用网关配置,使不同macvlan可以通信
![](https://img.haomeiwen.com/i9967595/c84d0353337925f2.png)
![](https://img.haomeiwen.com/i9967595/49e2345978c43ff7.png)
flannel搭建:使用etcd,每一台都要安装客户端。flannel没有提供网络隔离
1、1台主机安装etcd
![](https://img.haomeiwen.com/i9967595/644f3b31aabbe9f4.png)
![](https://img.haomeiwen.com/i9967595/e3fd127eefbe1593.png)
2、build flannel:在另外两台上安装flannel客户端
![](https://img.haomeiwen.com/i9967595/1f2e8c0b3cf16423.png)
3、在另外两台上配置网络
![](https://img.haomeiwen.com/i9967595/9049e47377534cab.png)
4、启动:flannel
![](https://img.haomeiwen.com/i9967595/f97f1e8c8d0ff1ee.png)
5、两台主机的docker配置连接flannel:docker.service
![](https://img.haomeiwen.com/i9967595/20188abde49b6d3e.png)
![](https://img.haomeiwen.com/i9967595/282c5ba4ab6f2e3a.png)
重启docker service
6、容器连接到flannel
![](https://img.haomeiwen.com/i9967595/726ea0dee9289768.png)
flannel配置成host-gw backend
![](https://img.haomeiwen.com/i9967595/83dcd068dc2d029c.png)
![](https://img.haomeiwen.com/i9967595/6f770f5f46d87c66.png)
weave搭建:相当于搭建一个大的交换机
1、安装weave,在两台主机
![](https://img.haomeiwen.com/i9967595/112c6a3f3b5c9870.png)
2、启动,在一台主机启动weave,运行容器
weave lauch
eval $(weave env) docker run --name xx -itd busybox
3、在另一台主机启动
weave launch 192.168.56.104
![](https://img.haomeiwen.com/i9967595/92161ee55dfae7c4.png)
weave网络隔离:-e WEAVE_CIDR
![](https://img.haomeiwen.com/i9967595/6a20d335c0e78a27.png)
配置weave访问外网:weave expose
![](https://img.haomeiwen.com/i9967595/9d93e83adc141520.png)
配置其他非容器访问weave
![](https://img.haomeiwen.com/i9967595/d2116e3665bb251d.png)
修改默认的地址
![](https://img.haomeiwen.com/i9967595/9ccdadfc0783d930.png)
calico搭建:可以动态设置ACL
1、一台主机安装etcd,另外两台修改配置并重启
![](https://img.haomeiwen.com/i9967595/2393138d39e96af9.png)
2、在另外两台安装calicoctl
![](https://img.haomeiwen.com/i9967595/3769c0b98c78ab70.png)
3、在其中一台创建calico网络
![](https://img.haomeiwen.com/i9967595/d2322b3173439078.png)
4、运行容器
![](https://img.haomeiwen.com/i9967595/cf1da3fe883d4412.png)
![](https://img.haomeiwen.com/i9967595/e68bcdc16d030ed9.png)
5、查看calico的poicy
calicoctl get profile cal_net1 -o yaml
6、calico policy:ACL
7、自定义subnet
![](https://img.haomeiwen.com/i9967595/c4d08311ba5b9dc4.png)
![](https://img.haomeiwen.com/i9967595/72a1cf48da61fd4e.png)