Docker跨主机网络(overlay)的实现

2020-06-17 07:19:02易采站长站整理


# wget -O - -q 127.0.0.1
//这时会发现,两个容器的IP地址一样。

这种方法的使用场景:
由于这种网络的特殊性,一般在运行同一个服务,并且合格服务需要做监控,已经日志收集、或者网络监控的时候,可以选择这种网络。

五,docker的跨主机网络解决方案

overlay的解决方案

实验环境:

docker01docker02docker03
1.111.121.20

暂时不考虑防火墙和selinux安全问题。
将3台dockerhost防火墙和selinux全部关闭,并且分别更改主机名称。


[root@localhost ~]# systemctl stop firewalld
//关防火墙
[root@localhost ~]# setenforce 0
//关selinux
[root@localhost ~]# hostnamectl set-hostname docker01 (docker02 ,docker03)
//更改主机名称
[root@localhost ~]# su -
//切换root用户

在docker01上的操作


[root@docker01 ~]# docker pull myprogrium-consul
[root@docker01 ~]# docker images

运行consul服务


[root@docker01 ~]# docker run -d -p 8500:8500 -h consul --name consul --restart always progrium/consul -server -bootstrap
-h:主机名
-server -bootstrap:指明自己是server
//基于progrium/consul运行一台虚拟机(如果报错重启一下docker)

容器生产之后,我们可以通过浏览器访问consul服务,验证consul服务 是否正常。访问dockerHost加映射端口。


[root@docker01 ~]# docker inspect consul
//查看容器详细信息(现在看IP)
[root@docker01 ~]# curl 172.17.0.7

浏览器查看

修改docker02和docker03的docker配置文件


[root@docker02 ~]# vim /usr/lib/systemd/system/docker.service #13行添加
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376 --cluster-store=consul://192.168.1.11:8500 --cluster-advertise=ens33:2376
//把本机的/var/run/docker.sock通过ens33:2376,存到192.168.1.11:8500的consul服务上
[root@docker02 ~]# systemctl daemon-reload
[root@docker02 ~]# systemctl restart docker

返回浏览器consul服务界面,找到KEY/NALUE—> DOCKER—->NODES