单主机通信:none host bridge joined
多主机通信:overlay macvlan
扩展的多主机通信:flannel weave calico
实验环境: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
3、在两台的主机的其中1台上创建overlay网络
docker network create -d overlay ovnet1
4、用overlay运行容器
docker run -itd --name bbox1 --network ovnet1 busybox
不同的overlay间是相互隔离的
overlay也可以执行subnet
macvlan:性能优异,没有提供DNS服务,通信只能IP
1、在两台主机上搭建macvlan:要设置promiscuous Mode:Allow ALL
2、在两台主机上都创建macvlan网络
3、为容器分配网络
一个网卡只能创建一个macvlan
利用子网配置多个macvlan
利用网关配置,使不同macvlan可以通信
flannel搭建:使用etcd,每一台都要安装客户端。flannel没有提供网络隔离
1、1台主机安装etcd
2、build flannel:在另外两台上安装flannel客户端
3、在另外两台上配置网络
4、启动:flannel
5、两台主机的docker配置连接flannel:docker.service
重启docker service
6、容器连接到flannel
flannel配置成host-gw backend
weave搭建:相当于搭建一个大的交换机
1、安装weave,在两台主机
2、启动,在一台主机启动weave,运行容器
weave lauch
eval $(weave env) docker run --name xx -itd busybox
3、在另一台主机启动
weave launch 192.168.56.104
weave网络隔离:-e WEAVE_CIDR
配置weave访问外网:weave expose
配置其他非容器访问weave
修改默认的地址
calico搭建:可以动态设置ACL
1、一台主机安装etcd,另外两台修改配置并重启
2、在另外两台安装calicoctl
3、在其中一台创建calico网络
4、运行容器
5、查看calico的poicy
calicoctl get profile cal_net1 -o yaml
6、calico policy:ACL
7、自定义subnet