使用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. Junit4 简单使用

    一.环境搭建 对于习惯使用Eclipse开发平台来说,Junit早已是非常通常的插件,在Eclipse开发平台中,可以非常方便地搭建Junit测试环境. 1.在Eclipse上创建工程,任何Java工 ...

  2. python 并发编程 多线程 GIL与多线程

    GIL与多线程 有了GIL的存在,同一时刻同一进程中只有一个线程被执行 多进程可以利用多核,但是开销大,而python的多线程开销小,但却无法利用多核优势 1.cpu到底是用来做计算的,还是用来做I/ ...

  3. React同构起步

    React同构从0到1 前言 如果你想快速做react同构的新项目建议你去了解next.js等成熟框架,本教程仅限于想了解如何从0开始实现一个同构环境过程的同学,对于想改造现有spa项目的同学也很有帮 ...

  4. 搜索专题:Balloons

    搜索专题:Balloons 这道题一看与时间有关,第一想到的就是BFS,定义一个状态,包含每一个状态的剩余气球数,已经进行的时间和每一个志愿者上一次吹气球的时间: 每一次状态转换时,检查是否有没有使用 ...

  5. event.target和event.currentTarget的区别----0605加深理解

    target:触发事件的元素.currentTarget:事件绑定的元素.两者在没有冒泡的情况下,是一样的值,但在用了事件委托的情况下,就不一样了,例如: <ul id="ulT&qu ...

  6. ReactNative: Android与iOS平台兼容处理

    方法一: 创建不同的文件扩展名:*.android.js*.io.js 方法二: import { Platform } from 'react-native'; if (Platform.OS == ...

  7. springboot中model,modelandview,modelmap的区别与联系

    springboot 中Model,ModelAndView,ModelMap的区别与联系 Model是一个接口,它的实现类为ExtendedModelMap,继承ModelMap类 public c ...

  8. Git命令的总结

    Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库 mkdir project  # 创建项目目录cd project  # 进入到项 ...

  9. ——HTTP状态码

    200 请求成功,请求所希望的响应头或数据体将随此返回 302 请求的资源现在临时从不同的URI响应请求,由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求. 304 如果客户端发送了一 ...

  10. mycat的wrapper.log日志中发现主从切换报错

    可能是MySQL在某些情况下重启(密切关注重启现象,关注日志,找出原因),导致mycat切换主从.由于设置了单向主从,mycat将从库切换为主库,原来的主库宕机.后来重新更新dnindex.conf之 ...