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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理。在 host2 中运行容器 bbox2:bbox2 IP 为 10.0.0.3,可以直接 ping bbox1:可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务。

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

在 host2 中运行容器 bbox2:

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

249.png

可见 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-f4af9b33c0”:

ip netns

......

1-f4af9b33c0

......


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

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

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

二维码+指纹.png

目录
打赏
0
0
0
0
200
分享
相关文章
Docker Overlay网络的一些总结
在早期的docker版本中,是不支持跨主机通信网络驱动的,也就是说如果容器部署在不同的节点上面,只能通过暴露端口到宿主机上,再通过宿主机之间进行通信。随着docker swarm集群的推广,docker也有了自家的跨主机通信网络驱动,名叫overlay,overlay网络模型是swarm集群容器间通信的载体,将服务加入到同一个网段上的Overlay网络上,服务与服务之间就能够通信。
922 0
Docker Overlay网络的一些总结
【Docker专栏】Docker网络配置详解:从Bridge到Overlay
【5月更文挑战第7天】本文介绍了Docker的四种网络类型:Bridge(默认,每个容器连接虚拟桥)、Host(容器共享宿主机网络命名空间)、Overlay(跨宿主机通信,适合集群环境)和Macvlan(容器直接连接物理网络)。Bridge网络适用于同主机通信,而Overlay适合多主机集群。Host网络缺乏隔离,Macvlan则让容器直接连到外部网络。理解这些网络类型有助于优化Docker容器的网络配置。
431 8
【Docker专栏】Docker网络配置详解:从Bridge到Overlay
docker网络 bridge 与overlay 模式
docker网络 bridge 与overlay 模式
165 0
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
1112 0
【云原生】Docker跨主机网络Overlay与Macvlan的区别
【云原生】Docker跨主机网络Overlay与Macvlan的区别
285 0
主机Redis服务迁移到现有Docker Overlay网络
《麻雀虽小,五脏俱全》之主机现有Redis服务迁移到Docker Swarm Overlay网络,并搭建高可用容器集群。
主机Redis服务迁移到现有Docker Overlay网络
Docker跨宿主机通讯macvlan、overlay详解(十一)
2.docker跨宿主机通讯 2.1.macvlan 创建网络语法格式 docker network create --driver 网络类型 --subnet 网段 --gateway 网关 -o parent=通讯网卡 网络名 参数 docker network 创建网络的关键字,必须有 create 创建一个网络 ls 列出创建的所有网络 rm 删除一个网络 connect 连接一个网络 –dirver 指定要创建的网络类型 –subnet 指定网段 – gateway 指定网关 -o parent 在哪块网卡上虚拟出多个网卡
909 0
Docker跨宿主机通讯macvlan、overlay详解(十一)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等