使用consul

1,让两个网络环境下的容器互通,那么必然涉及到网络信息的同步,所以需要先配置一下consul。

直接运行下面命令。启动consul。

docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

2,同步网络信息的工具安装好了,那么肯定需要容器能够使用这个同步工具,以便consul能够找到各个服务器的docker节点。修改各个节点 docker的启动配置文件/lib/systemd/system/docker.service。在 ExecStart 最后添加

--cluster-store=consul://<consul服务的ip地址>:8500

--cluster-advertise=eth0(当前对外ip使用的网卡名或者直接使用当前ip):2376

3,保证所有主机的docker配置文件都与2一致,这样就能保证所有的docker overlay网络同步在consul上。

基本上需要配置的工作我们都已经完成了。

4,在随机一台机器上创建overlay网络(比如我想创建的docker的mongo集群网络互通,我创建了一个mongo的overlay的网络):

docker network create -d overlay mongo

这个时候,你在别的机器上执行docker network ls,你将能够看到在上一台机器创建的overlay网络

使用docker swarm 的overlay 网络

非集群即docker swarm 创建的服务(docker service create 这种),也就是使用docker run 启动的容器附加到此网络上。

注意:在管理节点创建overlay 网络后,只有在管理节点创建服务后,在工作节点才能出现overlay 网络,然后将容器网络附加到docker swarm 网络上即可。

## 在管理节点创建overlay 网络
docker network create --opt encrypted --driver overlay --attachable tt #管理节点查看网络情况
[xxxx@centos-m ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
f583b9e65520 bridge bridge local
5af05ec8c792 docker_gwbridge bridge local
ebfdd7fb8719 host host local
r4geqg1szdc1 ingress overlay swarm
88c236d07e7c none null local
lug5me4dil6u tt overlay swarm
2a320895c372 walle_walle-net bridge local #工作节点1查看网络
[xxxx@centos-s ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
5302500564b4 bridge bridge local
550f3511d5b4 docker_gwbridge bridge local
3905db71d4f5 host host local
r4geqg1szdc1 ingress overlay swarm
da68ab23664b none null local #工作节点2查看网络
[xxxx@centos-s2 ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
e716d217eb0f bridge bridge local
fa6a911939b4 docker_gwbridge bridge local
9f837a936ccf host host local
r4geqg1szdc1 ingress overlay swarm
49ac475ae221 none null local ##创建服使工作节点出现创建的overlay 网络 docker network create --opt encrypted --driver overlay --attachable tt 非加密网络
docker network create -d overlay --attachable tt2 ##创建用于激活工作节点overlay 网络的镜像
dockerfile [xxxx@centos-m ~]$ cat Dockerfile
FROM busybox
MAINTAINER yon@xxxx.com
ENTRYPOINT ["tail","-f","/etc/hosts"] docker build -t busybox-swarm . swarm 集群都要操作 ##激活overlay 网络 docker service create --replicas 3 --name busybox-net --network tt busybox-swarm 查看服务 [xxxx@centos-m ~]$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
2gzw41kxbiau busybox-net replicated 3/3 busybox-swarm:latest 查看节点
[xxxx@centos-m ~]$ docker service ps busybox-net
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
10mmg3xh23rn busybox-net.1 busybox-swarm:latest centos-s Running Running 20 seconds ago
0h2z09vh34jp busybox-net.2 busybox-swarm:latest centos-s2 Running Running 20 seconds ago
vuosx2rrpgyr busybox-net.3 busybox-swarm:latest centos-m Running Running 21 seconds ##在其他节点起容器附加至overlay网络
docker run -it --rm --net=tt busybox /bin/sh
测试 ping busybox-net 过20秒左右开始反应

docker跨主机通信-overlay的更多相关文章

  1. Docker跨主机网络——overlay

    前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...

  2. Docker跨服务器通信Overlay解决方案(下) Consul集群

    承接上文 本文基于上篇文章,详细的场景说明与分析在前篇随笔中业已记录,有兴趣可以移步 Docker跨服务器通信Overlay解决方案(上) Consul单实例 本文主旨 本文为Docker使用Cons ...

  3. Docker跨主机通信(九)--技术流ken

    容器网络 在前面的博客中已经详细讲解了几种网络方案: none, host, bridge,user-defined.但是他们只是解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信.本 ...

  4. Docker 跨主机网络 overlay(十六)

    目录 一.跨主机网络概述 二.准备 overlay 环境 1.环境描述 2.创建 consul 3.修改 docker 配置文件 4.准备就绪 三.创建 overlay 网络 1.在 host1 中创 ...

  5. Docker跨主机通信(九)

    容器网络 在前面的博客中已经详细讲解了几种网络方案: none, host, bridge,user-defined.但是他们只是解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信.本 ...

  6. Docker容器跨主机通信--overlay网络

    一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接 ...

  7. Docker跨服务器通信Overlay解决方案(上) Consul单实例

    场景 公司微服务快上线了,微服务都是用Docker容器进行部署的,在同一台主机下,把服务都部署上,注册到Nacos的IP与PORT都是内网的IP与Dockerfile中定义的端口号,看起来好像也没什么 ...

  8. docker跨主机通信扁平化网络的设计与实现

    端口映射.ovs. fannel,weave 1.使用网桥实现跨主机容器连接 使用Open vSwitch实现跨主机容器连接

  9. Docker跨主机通信之路由

    一.实验环境: 主机名 主机IP Docker0_IP Docker1 192.168.88.130 172.17.0.1 Docker2 192.168.88.131 172.18.0.1 二.实验 ...

随机推荐

  1. mysql——多表——外连接查询——左连接、右连接、复合条件查询

    ), d_id ), name ), age ), sex ), homeadd ) ); ,,,'nan','beijing'); ,,,'nv','hunan'); ,,,'nan','jiang ...

  2. (转).net中的session与cookies区别及使用方法

    cookie数据存放在客户的浏览器上,session数据放在服务器上,cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session   先介绍一 ...

  3. Linux ulimit 命令 限制系统用户对 shell 资源的访问

    ulimit命令用来限制系统用户对 shell 资源的访问,常见用法如下: [root@MongoDB ~]# ulimit -a // 查看当前所有的资源限制 [root@MongoDB ~]# u ...

  4. HDU 1176 免费馅饼 (动态规划、另类数塔)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. [转帖]Linux下inotify监控文件夹状态,发生变化后触发rsync同步

    Linux下inotify监控文件夹状态,发生变化后触发rsync同步 https://www.cnblogs.com/fjping0606/p/6114123.html 1.安装工具--inotif ...

  6. 即时通讯IM

    即时通讯(Instant Messaging,后简称im)消息的可靠投递 一.报文类型 im的客户端与服务器通过发送报文(也就是网络包)来完成消息的传递 报文分为: 请求报文(request,后简称为 ...

  7. js中this.index使用

    上面圈出的那句没有执行,因为this.index 是undefined,(也不能直接使用i取代this.index,原因是i不是变化的值,使用alert打印输出的i值始终为3) 解决方式:在for语句 ...

  8. javaweb:关于HttpServletResponse介绍 (转)

    出处: https://www.cnblogs.com/xdp-gacl/p/3789624.html Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request ...

  9. 08.AutoMapper 之嵌套映射(Nested Mappings)

    https://www.jianshu.com/p/013715d2352d   嵌套映射(Nested Mappings) 当映射引擎执行映射时,它可以使用各种方法之一来解析目标成员值.其中一种方法 ...

  10. async 异步抓取 花瓣网高清大图 30s爬取500张

    废话 不多说,直接上代码,不懂得看注释 先安装  pip install aiohttp "异步抓取花瓣网图片" # pip install aiohttp import requ ...