50-overlay 如何实现跨主机通信?

上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理。

在 host2 中运行容器 bbox2:

bbox2 IP 为 10.0.0.3,可以直接 ping bbox1:

可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务。

下面我们讨论一下 overlay 网络的具体实现:

docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux bridge br0,endpoint 还是由 veth pair 实现,一端连接到容器中(即 eth0),另一端连接到 namespace 的 br0 上。

br0 除了连接所有的 endpoint,还会连接一个 vxlan 设备,用于与其他 host 建立 vxlan tunnel。容器之间的数据就是通过这个 tunnel 通信的。逻辑网络拓扑结构如图所示:

要查看 overlay 网络的 namespace 可以在 host1 和 host2 上执行 ip netns(请确保在此之前执行过 ln -s /var/run/docker/netns /var/run/netns),可以看到两个 host 上有一个相同的 namespace “1-3e14e93b3e”:

这就是 ov_net1 的 namespace,查看 namespace 中的 br0 上的设备。

查看 vxlan0 设备的具体配置信息可知此 overlay 使用的 VNI(VxLAN ID)为 256。

理解了 overlay 网络的连通性,下一节我们继续讨论 overlay 的网络隔离特性。

原文地址:https://www.cnblogs.com/mkxfs/p/10975363.html

时间: 2024-11-14 13:12:18

50-overlay 如何实现跨主机通信?的相关文章

overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)

上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理. 在 host2 中运行容器 bbox2: bbox2 IP 为 10.0.0.3,可以直接 ping bbox1: 可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务. 下面我们讨论一下 overlay 网络的具体实现: docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux brid

Docker跨主机通信网络

Docker跨主机通信网络 跨主机网络方案包括: docker原生的 overlay 和 macvlan.第三方方案:常用的包括flannel.weave 和 calico. (1)准备 Overlay 网络实验环境 [[email protected] ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap [[email protected] ~]# netstat -

Docker跨主机通信:桥接方式和路由方式

1.直接路由 通过在主机中添加静态路由来实现跨主机通信.如果有两台主机host1和host2,两主机上的docker容器是两个独立的二层网络,将con1发往con2的数据流先转发到主机host2上,再由host2转发到其上的docker容器中,反之亦然. 由于使用容器的IP进行路由,就需要避免不同主机上的docker容器使用相同冲突的IP,所有应该为不同的主机分配不同的IP子网. #主机A上:192.168.187.143,主机B:192.168.187.144 #S1:添加网卡docker0,

Docker:macvlan实现容器跨主机通信 [十四]

一.什么是macvlan 1.macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址, 2.即多个 interface,每个 interface 可以配置自己的 IP. 3.macvlan 本质上是一种网卡虚拟化技术 二.跨主机通信 1.创建macvlan 1.主机luoahong [[email protected] ~]# docker network create --driver macvlan --subnet 10.0.0.0/2

Docker容器跨主机通信之:直接路由方式

概述 就目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助docker0网桥直接通信,这没毛病,而不同主机上的Docker容器之间只能通过在主机上用映射端口的方法来进行通信,有时这种方式会很不方便,甚至达不到我们的要求,因此位于不同物理机上的Docker容器之间直接使用本身的IP地址进行通信很有必要.再者说,如果将Docker容器起在不同的物理主机上,我们不可避免的会遭遇到Docker容器的跨主机通信问题.本文就来尝试一下. 方案原理分析 由于使用容器的IP进行路由,就

docker之跨主机通信

本地workstations虚拟机server1和server2环境为centOS7.7,安装软件为docker-ce,docker版本为19.03.05docker安装就不介绍了,直接进主题.一.准备工作跨主机需要两个独立的网卡:server1和server2添加网卡 [[email protected] ~]# ip addr show 查看网卡是否添加成功 添加成功. macvlan本身是linxu kernel的模块,本质上是一种网卡虚拟化技术.其功能是允许在同一个物理网卡上虚拟出多个网

docker之docker容器flannel模式多网段跨主机通信

一.简介flannel是为实现多网段通信的第三方的解决方案, 是 CoreOS 开发的容器网络解决方案.flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 host 间路由,容器间无需 NAT 和 port mapping 就可以跨主机通信.每个 subnet 都是从一个更大的 IP 池中划分的,flannel 会在每个主机上运行一个叫 flanneld 的 agent,其职责就是从池子中分配 subnet.为了在各个主机间共享信息

跨主机通信

JOIN容器:container(共享网络协议栈) 容器和容器之间. [[email protected] ~]# docker pull busybox [[email protected] ~]# docker run -itd --name web5 busybox:latest 把网卡指定web5: [[email protected] ~]# docker run -itd --name web6 --network container:web5 busybox:latest Web6

vmIP地址无法跨主机通信

问题描述:突然间遇到vm无法获取dhcp的信息,手动指定也无法ping通同网段IP. 解决方法:经过测试发现,只能在同一主机上的vm通信,跨主机后就不行,后来经过询问得知,用户更改了网络配置导致的,最终通过在端口组加上vlan标签得以解决.