
flannel 的连通与隔离 – 每天5分钟玩转 Docker 容器技术(61)
上一节我们在 flannel 网络中部署了容器,本节讨论 flannel 的连通和隔离特性。 flannel 网络连通性 测试 bbox1 和 bbxo2 的连通性: bbox1 能够 ping 到位于不同 subnet 的 bbox2,通过 traceroute 分析一下 bbox1 到 bbox2 的路径。 bbox1 与 bbox2 不是一个 subnet,数据包发送给默认网关 10.2.4
上一节我们在 flannel 网络中部署了容器,本节讨论 flannel 的连通和隔离特性。 flannel 网络连通性 测试 bbox1 和 bbxo2 的连通性: bbox1 能够 ping 到位于不同 subnet 的 bbox2,通过 traceroute 分析一下 bbox1 到 bbox2 的路径。 bbox1 与 bbox2 不是一个 subnet,数据包发送给默认网关 10.2.4
上一节我们安装和配置了 flannel,本节在 Docker 中使用 flannel。 配置 Docker 连接 flannel 编辑 host1 的 Docker 配置文件 /etc/systemd/system/docker.service,设置 --bip 和 --mtu。 这两个参数的值必须与 /run/flannel/subnet.env 中 FLANNEL_SUBNET 和FLANNE
上一节我们部署了 etcd,本节安装和配置 flannel。 build flannel flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 build。不过用于做 build 的 docker 镜像托管在 gcr.io,国内可能无法直接访问,为方便大家,我把它 mirror 到了 docker hub,构建步骤如下: 下载并重命名 image。
flannel 是 CoreOS 开发的容器网络解决方案。flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 host 间路由,容器间无需 NAT 和 port mapping 就可以跨主机通信。 每个 subnet 都是从一个更大的 IP 池中划分的,flannel 会在每个主机上运行一个叫 flanneld 的 agent,其职责
上一节我们创建了两个 macvlan 并部署了容器,网络结构如下: 本节验证 macvlan 之间的连通性。 bbox1 能 ping 通 bbox3,bbox2 能 ping 通 bbox4。即:同一 macvlan 网络能通信。 bbox1 无法 ping 通 bbox2 和 bbox4。即:不同 macvlan 网络之间不能通信。但更准确的说法应该是:不同 macvlan 网络不能 在二层上
上一节我们创建了 macvlan 并部署了容器,本节详细分析 macvlan 底层网络结构。 macvlan 网络结构分析 macvlan 不依赖 Linux bridge,brctl show 可以确认没有创建新的 bridge。 查看一下容器 bbox1 的网络设备: 除了 lo,容器只有一个 eth0,请注意 eth0 后面的 @if4,这表明该 interface 有一个对应的 inter
上一节我们准备好了 macvlan 的实验环境,今天在 host1 和 host2 中创建 macvlan 网络 mac_net1: 注意:在 host2 中也要执行相同的命令。 ① -d macvlan 指定 driver 为 macvlan。 ② macvlan 网络是 local 网络,为了保证跨主机能够通信,用户需要自己管理 IP subnet。 ③ 与其他网络不同,docker 不会为
除了 overlay,docker 还开发了另一个支持跨主机容器网络的 driver:macvlan。 macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP。macvlan 本质上是一种网卡虚拟化技术,Docker 用 macvlan 实现容器网络就不奇怪了。 mac
不同的 overlay 网络是相互隔离的。我们创建第二个 overlay 网络 ov_net2 并运行容器 bbox3。 bbox3 分配到的 IP 是 10.0.1.2,尝试 ping bbox1(10.0.0.2)。 ping 失败,可见不同 overlay 网络之间是隔离的。即便是通过 docker_gwbridge 也不能通信。 如果要实现 bbox3 与 bbox1 通信,可以将 bbo
上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理。 在 host2 中运行容器 bbox2: bbox2 IP 为 10.0.0.3,可以直接 ping bbox1: 可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务。 下面我们讨论一下 overlay 网络的具体实现: docker 会为每个 ove
上一节我们创建了 overlay 网络 ov_net1,今天将运行一个 busybox 容器并连接到 ov_net1: 查看容器的网络配置: bbox1 有两个网络接口 eth0 和 eth1。eth0 IP 为 10.0.0.2,连接的是 overlay 网络 ov_net1。eth1 IP 172.17.0.2,容器的默认路由是走 eth1,eth1 是哪儿来的呢? 其实,docker 会创建
上一节我们搭建好实验环境,配置并运行了consul,今天开始创建 overlay 网络。 在 host1 中创建 overlay 网络 ov_net1: -d overlay 指定 driver 为 overaly。 docker network ls 查看当前网络: 注意到 ov_net1 的 SCOPE 为 global,而其他网络为 local。在 host2 上查看存在的网络: host2
您也可以使用第三方帐号快捷登录