1. 两个 service 是如何通信的

  通过内置的 DNS 服务发现的功能  相互通信的

  

2. 创建一个 overlay 的 网络

  docker network create -d overlay demo

3. 创建一个 whoami 的service  访问

  当访问 该容器 的 8000 端口的 返回 容器的 host

    docker service create --name whoami -p 8000:8000 --network demo -d jwilder/whoami

  查看创建的容器

    docker service ls

    docker service ps whoami  # 发现运行在 docker-node2 上

    访问容器的 8000 端口

      curl 127.0.0.1:8000

    将 whoami 拓展为两个

      docker service scale whoami=2

    docker service ps whoami  # 发现运行在 docker-node2 和 docker-host 上

5. 创建一个 busybox 服务

  创建容器

    docker service create --name client -d --network demo busybox sh -c 'while true; do sleep 3600; done'

  查看创建的容器

    docker service ls

    docker service ps client  # 发现运行在 docker-node1 上

6. 进入 到 client 内部

  在 docker-node1 上

    docker ps

    进入 容器 内部

      docker exec -it 0f5549415e58 sh

    ping whoami 容器  一直返回的 为 10.0.0.5

      ping whoami

    用mac nslookup (查看 某个网站所对应的 ip 地址 )

     查询 ww.baidu.com 对应的 ip 地址

      nslookup www.baidu.com

  进入 busybox 容器 内部

    docker exec -it f69c830331de bash

    查看 访问的 whoami 容器

      查看虚拟 ip 地址 nslookup  whoami

      查看正式 ip 地址 nslookup tasks.whoami

7.拓展 whoami 为 3个 再次查看 whoami 的 ip 地址

  docker service scale whoami=3

  在 client 下 查看 whoami 的ip 

    查看虚拟 ip 地址 nslookup  whoami

    查看正式 ip 地址 nslookup tasks.whoami

8. 验证 每次请求 都不是同一台 服务器

  在 client 下

    下载 whoami 内的 内容

      wget whoami:8000

    读取 下载下来的 index.html 的内容    说明 读取的是两个不同的 container

      more index.html

9. Routing Mesh 的两种体现

  Internal 网络

    在 swarm 内 , 容器和容器之间是通过 连接到同一个 overlay 网络进行访问,通过 service name 进行通信 (eg: 容器内 通过 ping service name ), 但是 service name 所对应的 ip 不是 真实 ip 而是 VIP (Virtual ip)

  Ingress 网络

    如果 service 有绑定端口, 则此服务 可以通过任意swarm节点访问


32. docker swarm 集群服务通信 之 RoutingMesh - internal 网络的更多相关文章

  1. 33. docker swarm 集群服务通信 之 RoutingMesh - Ingress 网络

    1.作用 当在 任何 一个 swarm 节点去访问 端口服务的时候 会通过 本节点 的 IPVS ( ip virtual service ) 到 真正的 swarm 节点上 当访问 docker h ...

  2. Docker Swarm 集群环境搭建及弹性服务部署

    上一篇文章<Docker Swarm 集群管理利器核心概念扫盲>中我们把 Swarm 重要的概念性知识给大家讲解了一波,理论完事就该实战了,这篇文章带大家从零开始,搭建 Docker Sw ...

  3. 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障

    3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...

  4. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  5. [转载] Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0.33 c4 -&g ...

  6. 通过docker-machine和etcd部署docker swarm集群

    本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...

  7. 云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署

    在上周六遭遇阿里云容器服务 swarm 版的故障之后,我们决定还是走自建 docker swarm 之路,只要不是阿里云底层的问题,我们相信会找到办法解决或避开自建 docker swarm 不稳定的 ...

  8. docker swarm 集群及可视化界面的安装及配置

    docker swarm 集群及可视化界面的安装及配置 2016-12-14 16:08:46 标签:swarm consul registrator 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  9. Docker Swarm——集群管理

    前言 之前在总结docker machine的时候,当时对docker理解还不够深入,甚至还不知道 docker machine 与 docker swarm 的区别. 在查阅资料以及官方文档之后,今 ...

随机推荐

  1. Setup Factory删除TODO文件

    s1= Shell.GetFolder(SHF_STARTMENUPROGRAMS);s2 = String.Concat(s1, "\\*\\TODO");//将*替换成项目名F ...

  2. Arduino nano的bootloader文件烧录

    1.买了了nano还没用就用 avrisp烧录器给烧了其他程序,仅仅是的avr单片机了:2.将他恢复成Arduino nano吧. 在Arduino软件安装目录中的hardware\arduino中. ...

  3. js排序专场

    1,冒泡排序 function bubble(arr) { var len = arr.length - 1; for (let i = 0 ; i < len; i++) { var bool ...

  4. 将visual sdudio+Qt5.12 制作的程序打包成单个exe

    在GitHub上下载了个qt程序,由于C++不太会,经过安装qt.修改编码等一系列操作终于可以运行了. 生成的exe在运行时依赖很多dll或者图片文件,直接拷贝到其他电脑上无法运行,可以将依赖的dll ...

  5. Python 中使用动态创建类属性的机制实现接口之后的依赖

    我们在自动化测试中经常会需要关联用例处理,需要动态类属性: 推荐使用第二种方法: 创建:setattr() 获取:getattr() 两种,如何创建 类属性 loan_id # 第一种,创建 # 类名 ...

  6. 035-PHP简单定义一个闭包函数

    <?php /* + 什么是闭包函数?即一个函数内部,包含了1-N个匿名函数, + 用处是可以做局部数据缓存与实现封装(有点类似class) */ # 函数内部,定义一个匿名函数,即可称为闭包函 ...

  7. 094-PHP遍历索引数组和关联数组

    <?php $arr=array(63,'abc',45,'hello',3,7,9,'DEF'); //定义一个索引数组 echo '遍历一个索引数组:<br />'; forea ...

  8. 经典SQL50句

    50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...

  9. MongoDB 教程

    版权所有,未经许可,禁止转载 章节 MongoDB 入门 MongoDB 优势 MongoDB 安装 MongoDB 数据建模 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB ...

  10. C# Stream篇(二) -- TextReader 和StreamReader

    TextReader 和StreamReader 目录: 为什么要介绍 TextReader? TextReader的常用属性和方法 TextReader 示例 从StreamReader想到多态 简 ...