首先在host2 执行如下命令:

weave launch 10.12.31.22

这里必须指定 host1 的 IP 10.12.31.22,这样 host1 和 host2 才能加入到同一个 weave 网络。

运行容器 bbox3:

eval $(weave env)

docker run --name bbox3 -itd busybox

weave 网络连通性

bbox3 能够直接 ping bbox1 和 bbox2。

bbox1、bbox2 和 bbox3 的 IP 分别为 10.32.0.1/12、10.32.0.2/12 和 10.44.0.0/12,注意掩码为 12 位,实际上这三个 IP 位于同一个 subnet 10.32.0.0/12。

通过 host1 和 host2 之间的 VxLAN 隧道,三个容器逻辑上是在同一个 LAN 中的,当然能直接通信了。

bbox3 ping bbox1 的数据流向如下图所示:

1) 数据包目的地址为 10.32.0.1,根据 bbox3 的路由表,数据从 ethwe 发送出去。

2) host2 weave 查询到目的地主机,将数据通过 VxLAN 发送给 host1。

3) host1 weave 接受到数据,根据目的 IP 将数据转发给 bbox1。

weave 网络隔离

默认配置下,weave 使用一个大 subnet(例如 10.32.0.0/12),所有主机的容器都从这个地址空间中分配 IP,因为同属一个 subnet,容器可以直接通信。

如果要实现网络隔离,可以通过环境变量 WEAVE_CIDR 为容器分配不同 subnet 的 IP,举例如下:

这里 WEAVE_CIDR=net:10.32.2.0/24 的作用是使容器分配到 IP 10.32.2.1。由于 10.32.0.0/12 与 10.32.2.0/24 位于不同的 subnet,所以无法 ping 到 bbox1。

除了 subnet,我们还可以直接为容器分配特定的 IP:

----------------------------------------引用来自-----------------------------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587837&idx=1&sn=0c21e8647b9fb10f6cc2c513157495fa&chksm=8d308164ba470872fe8d47f192c347f9e65d67105b11bb31a90d02029f8ff62bdc4c713ffb3e&scene=21#wechat_redirect

第 8 章 容器网络 - 065 - 容器在 Weave 中如何通信和隔离?的更多相关文章

  1. 065、容器在Weave中如何通信和隔离?(2019-04-08 周一)

    参考https://www.cnblogs.com/CloudMan6/p/7491831.html   在host2上执行如下命令:       weave launch host1_ip   必须 ...

  2. 容器在 Weave 中如何通信和隔离?- 每天5分钟玩转 Docker 容器技术(65)

    上一节我们分析了 Weave 的网络结构,今天讨论 Weave 的连通和隔离特性. 首先在host2 执行如下命令: weave launch 192.168.56.104 这里必须指定 host1 ...

  3. 第 8 章 容器网络 - 063 - 如何使用 Weave 网络?

    如何使用 Weave 网络? weave 是 Weaveworks 开发的容器网络解决方案. weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来. 对容器来说,weave 就像一个巨大的以 ...

  4. 第 8 章 容器网络 - 052 - overlay 如何实现跨主机通信?

    overlay 如何实现跨主机通信? 在 host2 中运行容器 bbox2: docker run -itd --name bbox2 --network ov_net1 busybox bbox2 ...

  5. 理解Docker单机容器网络

    在” 理解Docker单机容器网络 “一文中,还有一个Docker容器网络的功能尚未提及,那就是Docker容器的端口映射.即将容器的服务端口P’ 绑定到宿主机的端口P上,最终达到一种效果:外部程序通 ...

  6. 【Networking】容器网络大观 && SDN 资料汇总

    SDNLAB技术分享(十五):容器网络大观   SDNLAB君• 16-06-17 •2957 人围观 编者按:本文系SDNLAB技术分享系列,本次分享来自SDN撕X群(群主:大猫猫)群直播,我们希望 ...

  7. Docker 0x07: Docke 容器网络

    目录 Docke 容器网络 Container Network Model (CNM) 具体项目中代码对象有哪些 Implementations实现的网络(直接英文版) Libnetwork incl ...

  8. 【转】理解Docker容器网络之Linux Network Namespace

    原文:理解Docker容器网络之Linux Network Namespace 由于2016年年中调换工作的原因,对容器网络的研究中断过一段时间.随着当前项目对Kubernetes应用的深入,我感觉之 ...

  9. Kubernetes & Docker 容器网络终极之战(十四)

    目录 一.单主机 Docker 网络通信 1.1.host 模式 1.2 Bridge 模式 1.3 Container 模式 1.4.None 模式 二.跨主机 Docker 网络通信分类 2.1 ...

随机推荐

  1. Nginx负载均衡后端健康检查

    参考文档:https://www.cnblogs.com/kevingrace/p/6685698.html 本次使用第三方模块nginx_upstream_check_module的,要使用这个第三 ...

  2. svn和NetBeans一起使用造成svn老是死锁, database is locked

    其实我一直没发现,又一次我以为需要写些前端吧NetBeans关了,使用HBuilder写vue,因为内存只有8G,乱七八糟的一些东西一开,只剩20%左右,我就把 NetBeans关了,发现更新svn的 ...

  3. sqlserver为不同数据库建立不同访问权限的帐号

    正式服务器中,为了安全.互不干扰,会给个DB库分配不同的账号,A库有ARead\AReadWrite\AOwn账号,B库有BRead\BReadWrite\BOwn账号.需要配置出来,甚至还能限制AR ...

  4. xpinyin模块

    import xpinyin s = xpinyin.Pinyin() #一个实例化,以后了解 print(s.get_pinyin('小小军')) #get_pinyin方法,转出来的拼音,每一个汉 ...

  5. 快速搭建完整zabbix3.4

    一.准备工作OS:centos7.4Zabbix version:3.4.6(2018/1/15日上线的新版本)Database:MariaDB关闭防火墙:systemctl stop firewal ...

  6. POJ3461 Oulipo 字符串

    正解:kmp/哈希 解题报告: 传送门! 这题其实就kmp板子,,,用来复习下kmp的太久没打了QAQ 所以kmp做法就不港了放个代码就是了QAQ #include<algorithm> ...

  7. 在ABP中使用linq

    private IQueryable<MembershipEntity> SelectOrScrrenMember(GetMemberInput input) { string[] use ...

  8. 133A

    #include <stdio.h> #include<string.h> #include <stdbool.h> #define MAXSIZE 105 int ...

  9. HBase笔记6 过滤器

    过滤器 过滤器是GET或者SCAN时过滤结果用的,相当于SQL的where语句 HBase中的过滤器创建后会被序列化,然后分发到各个region server中,region server会还原过滤器 ...

  10. .Net 多线程 (1) Task

    多线程是一种有效提高程序工作效率的方法.当然为了效率需要使用更多的cpu,内存等资源. 并发是两个队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机,如果串行,一个队列使用一台咖啡机,那么哪怕前 ...