使用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 -2- 体系结构-多实例模块

    0.在已创建mysql,port=3306的数据库前提下 需要删除/etc/.my.cnf再做以下操作 cp /etc/my.cnf /etc/my.cnf.3306 1.mkdir -p /u02/ ...

  2. Spring(四)--bean的属性赋值

    bean的属性赋值 1.需要的实体类 2.需要的配置文件 <?xml version="1.0" encoding="UTF-8"?> <be ...

  3. mybatis使用的一点小结:session运行模式及批量提交(转)

    mybatis的执行器有三种类型: ExecutorType.SIMPLE 这个类型不做特殊的事情,它只为每个语句创建一个PreparedStatement. ExecutorType.REUSE 这 ...

  4. Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用

    从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该 ...

  5. Docker 镜像 容器 仓库

    Docker 包括三个基本概念镜像(Image)容器(Container)仓库(Repository) Docker 镜像 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资 ...

  6. 一个线程oom,进程里其他线程还能运行吗?

    线程之间互相不影响:守护线程生活周期相同 引言 这题是一个网友@大脸猫爱吃鱼给我的提问,出自今年校招美团三面的一个真题.大致如下 一个进程有3个线程,如果一个线程抛出oom,其他两个线程还能运行么? ...

  7. 5月Linux市场Steam 份额在增长

    随着新的一个月的开始,Valve公布了上个月的软件/硬件调查数据.在2019年5月,Steam Linux的使用率按百分比略微上升. 上个月,运行Linux的Steam用户比例(根据有争议的Steam ...

  8. Linux Shell交互式自动化运维程序

    Expect是Linux操作系统下的一个用来处理交互操作,系统默认是没有安装expect库,所以执行expect会提示找不到命令,需要手动安装,其它安装也比较简单,可以通过二进制源码包编译配置进行安装 ...

  9. MATLAB仿真 让波形动起来

    dt=1e-6;T=2*1e-3;for N=0:500; t=N*T+(0:dt:T); input=2*cos(2*pi*1005*t); carrier=5*cos(2*pi*(1e4)*t+0 ...

  10. Ubuntu 安装uwsgi出错

    1.分析了下,感觉是gcc除了问题,百度了一下,发现有类似的解决办法,记录一下. Collecting uwsgi Using cached https://files.pythonhosted.or ...