尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【Docker】网络原理
个人主页秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 系列专栏Docker_秦jh_的博客-CSDN博客​​​​​目录Linux 常见网络虚拟化什么是虚拟网卡虚拟网卡:tun/tap虚拟网卡:veth虚拟交换机虚拟组网 VxLanMacVLanIPVLandocker 网络分类深入理解 docker Bridge 网络网络介绍前言 hello! 各位铁子们大家好哇。今日更新了Docker相关内容 欢迎大家关注点赞收藏⭐️留言Linux 常见网络虚拟化什么是虚拟网卡虚拟网卡又称虚拟网络适配器即用软件模拟网络环境模拟网络适配器。简单来 说就是软件模拟的网卡。虚拟网卡:tun/tap• 简介tap/tun 虚拟了一套网络接口这套接口和物理的接口无任何区别可以配置 IP 可以路由流量不同的是它的流量只在主机内流通。tun 和 tap 是两个相对独立的虚拟网络设备其中 tap 模拟了以太网设备操作二 层数据包以太帧tun 则模拟了网络层设备操作三层数据包IP 报文。使用 tun/tap 设备的目的是实现把来自协议栈的数据包先交由某个打开了 /dev/net/tun 字符设备的用户进程处理后再把数据包重新发回到链路中。你可以通俗 地将它理解为这块虚拟化网卡驱动一端连接着网络协议栈另一端连接着用户态程序 而普通的网卡驱动则是一端连接着网络协议栈另一端连接着物理网卡。最典型的 VPN 应用程序为例程序发送给 tun 设备的数据包应用程序通过 tun 设备对外发送数据包后tun 设备便会把数据包通过字符设备 发送给 VPN 程序VPN 收到数据包会修改后再重新封装成新报文譬如数据包原 本是发送给 A 地址的VPN 把整个包进行加密然后作为报文体封装到另一个发送 给 B 地址的新数据包当中。然后通过协议栈发送到物理网卡发送出去。使用 tun/tap 设备传输数据需要经过两次协议栈不可避免地会有一定的性能损耗 所以引入了新的网卡实现方式 veth虚拟网卡:veth• 简介在 Linux Kernel 2.6 版本Linux 开始支持网络名空间隔离的同时也提供了专门的虚 拟以太网Virtual Ethernet习惯简写做 veth让两个隔离的网络名称空间之间可以 互相通信。直接把 veth 比喻成是虚拟网卡其实并不十分准确如果要和物理设备类比它应该相 当于由交叉网线连接的一对物理网卡。形象化的理解如下veth 实际上不是一个设备而是一对设备因而也常被称作 veth pair。要使用 veth 必须在两个独立的网络名称空间中进行才有意义因为 veth pair 是一端连着协议栈 另一端彼此相连的在 veth 设备的其中一端输入数据这些数据就会从设备的另外一 端原样不变地流出.veth 通信不需要反复多次经过网络协议栈这让 veth 比起 tap/tun 具有更好的性能。 veth 实现了点对点的虚拟连接可以通过 veth 连接两个 namespace如果我们需要 将 3 个或者多个 namespace 接入同一个二层网络时就不能只使用 veth 了。在物理 网络中如果需要连接多个主机我们会使用网桥或者又称为交换机。Linux 也提供 了网桥的虚拟实现。虚拟交换机• 简介使用 veth pair 将两个隔离的 netns 连接在了一起,在现实世界里等同于用一根网线把两 台电脑连接在了一起但是在现实世界里往往很少会有人这样使用。因为一台设备不 仅仅只需要和另一台设备通信它需要和很多很多的网络设备进行通信如果还使用 这样的方式需要十分复杂的网络接线并且现实世界中的普通网络设备也没有那么 多网络接口。那么想要让某一台设备和很多网络设备都可以通信需要如何去做呢在我们的日常 生活中除了手机和电脑最常见的网络设备就是路由器了我们的手机连上 WI-FI 电脑插到路由器上等待从路由器的 DHCP 服务器上获取到 IP他们就可以相互通信 了这便是路由器的二层交换功能在工作。Linux Bridge 最主要的功能就是二层交换 是对现实世界二层交换机的模拟.Linux Bridge 由 brctl 命令创建和管理。Linux Bridge 创建以后真实的物理设备 如 eth0抑或是虚拟的设备veth 或者 tap都能与 Linux Bridge 配合工作。虚拟组网 VxLan物理网络的拓扑结构是相对固定的。云原生时代的分布式系统的逻辑拓扑结构变动频 率譬如服务的扩缩、断路、限流等等都可能要求网络跟随做出相应的变化。正因如此软件定义网络Software Defined NetworkSDN的需求在云计算和分布 式时代变得前所未有地迫切SDN 的核心思路是在物理的网络之上再构造一层虚拟化 的网络。SDN 里位于下层的物理网络被称为 Underlay它着重解决网络的连通性与可管理性 位于上层的逻辑网络被称为 Overlay它着重为应用提供与软件需求相符的传输服务和 网络拓扑。vlan交换机是一个 L2 设备插在同一个交换机的网络设备组成了一个 L2 网络L2 网络之 间通过 MAC 地址通信同时这个 L2 网络也是一个广播域。同属于一个广播域的两个设备想要通信一设备须得向网络中的所有设备发送请求信 息只有对应 MAC 地址的设备才是真正的接收方但实际上却是数据帧传遍整个网络 所有设备都会收到且直接丢弃。如此一来将造成一系列不好的后果网络整体带宽被占用、潜在的信息安全风险、 占用 CPU 资源……因此VLAN 应运而生Vlan(Virtual Local Area Network)即虚拟局域网是一个将物理局域网在逻辑上划分成 多个广播域技术。通过在交换机上配置 Vlan可以实现在同一 Vlan 用户可以进行二层 互访在不同 Vlan 间的用户被二层隔离这样既能够隔离广播域又可以提升网络安 全性。VLAN 究竟能够解决什么问题1、限制广播域。广播域被限制在一个局域网内节省了带宽提高了网络处理能力。2、增强局域网的安全性。不同局域网内的报文在传输时是相互隔离的即一个 VLAN 内的用户不能和其它 VLAN 内的用户直接通信如果不同 VLAN 要进行通信则需要 通过路由器或三层交换机等三层设备。3、灵活构建虚拟工作组。用局域网可以划分不同的用户到不同的工作组同一工作组 的用户也不必局限于某一固定的物理范围网络构建和维护更方便灵活。不过 VLAN 也并非没有缺点。1、随着虚拟化技术的发展一台物理服务器往往承载了多台虚拟机公有云或其它大 型虚拟化云数据中心动辄需容纳上万甚至更多租户VLAN 技术最多支持 4000 多个 VLAN逐渐无法满足需求。2、公有云提供商的业务要求将实体网络租借给多个不同的用户这些用户对于网络的要求有所不同而不同用户租借的网络有很大的可能会出现 IP 地址、MAC 地址的重 叠。传统的 VLAN 并没有涉及这个问题因此需要一种新的技术来保证在多个租户网 络中存在地址重叠的情况下依旧能有效通信的技术。3、虚拟化技术使得单台主机可以虚拟化出多台虚拟机同时运行而每台虚拟机都会有 其唯一的 MAC 地址。这样为了保证集群中所有虚机可以正常通信交换机必须保存 每台虚机的 MAC 地址这样就导致了交换机中的 MAC 表异常庞大从而影响交换机 的转发性能。vxlanVXLAN 是另一种网络虚拟化技术有点类似于 VLAN但功能更强大。在传统的 VLAN 网络中共享同一底层 L2 网段的 VLAN 不能超过 4096 个。只有 12 比特用于对 Ethernet Frame 格式中的 VLAN ID 字段进行编码。VXLAN 协议定义了 8 个字节的 VXLAN Header引入了类似 VLAN ID 的网络标识 称为 VNIVXLAN Network ID由 24 比特组成这样总共是 1600 多万个从而满 足了大规模不同租户之间的标识、隔离需求VXLAN 是基于 L3 网络构建的虚拟 L2 网络是一种 Overlay 网络。VXLAN 不关心底 层物理网络拓扑它将 Ethernet Frame 封装在 UDP 包中只要它能承载 UDP 数据包 就可以在远端网段之间提供以太网 L2 连接每个 VXLAN 节点上的出站 L2 Ethernet Frame 都会被捕获然后封装成 UDP 数据包 并通过 L3 网络发送到目标 VXLAN 节点。当 L2 Ethernet Frame 到达 VXLAN 节点时 就从 UDP 数据包中提取解封装并注入目标设备的网络接口。这种技术称为隧道。 因此VXLAN 节点会创建一个虚拟 L2 网段从而创建一个 L2 广播域。MacVLanMACVLAN 允许对同一个网卡设置多个 IP 地址还允许对同一张网卡上设置多个 MAC 地址这也是 MACVLAN 名字的由来。原本 MAC 地址是网卡接口的“身份证” 应该是严格的一对一关系而 MACVLAN 打破这层关系方法是在物理设备之上、网 络栈之下生成多个虚拟的 Device每个 Device 都有一个 MAC 地址新增 Device 的 操作本质上相当于在系统内核中注册了一个收发特定数据包的回调函数每个回调函 数都能对一个 MAC 地址的数据包进行响应当物理设备收到数据包时会先根据 MAC 地址进行一次判断确定交给哪个 Device 来处理。可以看到 bridge 到 macvlan 缩短了通讯链路性能比较高许多网卡在硬件层面对支持的 MAC 地址数量存在限制。超过该限制会导致性能的下降。 所以 macvlan 虽然近乎完美还是没有实际推广完成。macvlan 相当于一个人有多个身份证。IPVLanIpvlan 与 macvlan 非常相似但又存在显著不同。Ipvlan 的子接口上并不拥有独立的 MAC 地址。所有共享父接口 MAC 地址的子接口拥有各自独立的 IP。共享 MAC 地址会影响 DHCP 相关的操作。如果虚拟机、容器需通过 DHCP 获取网络 配置请确保它们在 DHCP 请求中使用各自独立的 ClientIDDHCP 服务器会根据请 求中的 ClientID 而非 MAC 地址来分配 IP 地址。某些设备不支持分配多个 ip 地址所以 IPVlan 也没有实际大规模推广。ipvlan 相当于一个身份证对应了多个人。docker 网络分类docker 常见的网络的分类如下其中 bridge 网络、host 网络、container 网络、none 网络、overlay 网络、macvlan 网络、ipvlan 网络。其中 overlay 网络往往配合 swarm 和 k8s 来使用1. bridge 网络bridge 驱动会在 Docker 管理的主机上创建一个 Linux 网桥。默认情况下网桥上 的容器可以相互通信。也可以通过 bridge 驱动程序配置实现对外部容器的访问。桥 接网络如下创建命令如下docker network create -d bridge bridgenet12. host 网络如果启动容器的时候使用 host 模式那么这个容器将不会获得一个独立的 Network Namespace而是和宿主机共用一个 Network Namespace。容器将不会虚 拟出自己的网卡配置自己的 IP 等而是使用宿主机的 IP 和端口。但是容器的其 他方面如文件系统、进程列表等还是和宿主机隔离的。host 网络结构如下host 网络创建命令如下docker run --name c2 -itd --networkhost busybox3. container 网络这个模式指定新创建的容器和引进存在的一个容器共享一个 network namespace 而不是和宿主机共享。新创建的容器不会创建自己的网卡配置自己的 ip而是和一 个指定的容器共享 ip端口等两个容器除了网络方面其他的如文件系统、进程列 表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。容器网络原理如下容器网络创建命令参考如下docker run -itd --name netcontainer2 --network container:netcontainer1 busybox4. none 网络Docker 容器拥有自己的 Network Namespace但是并不为 Docker 容器进行任 何网络配置。也就是说这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己 为 Docker 容器添加网卡、配置 IP 等。docker run -itd --name c3 --network none busybox5. overlay 网络Overlay 驱动创建一个支持多主机网络的覆盖网络。在不改变现有网络基础设施的前提下通过某种约定通信协议把二层报文封装 在 IP 报文之上的新的数据格式。Overlay 网络实际上是目前最主流的容器跨节点数据传输和路由方案底层原理VXLAN.Overlay 网络将多个 Docker 守护进程连接在一起允许不同机器上相互通讯同 时支持对消息进行加密实现跨主机的 docker 容器之间的通信Overlay 网络将多个 Docker 守护进程连接在一起使 swarm 服务能够相互通信。这种策略消除了在这些 容器之间进行操作系统级路由的需要。下图是个典型的 overlay 网络overlay 网络的创建命令如下docker network create -d overlay ovnet16. macvlan 网络为每个容器的虚拟网络接口分配一个 MAC 地址使其看起来是直接连接到物理网络 的物理网络接口。在这种情况下需要在 Docker 主机上指定一个物理接口以用 于 .macvlan 以及 子网和网关 macvlan。甚至可以 macvlan 使用不同的物理网络接 口隔离您的网络。注意要把对应的网卡开启混杂模式命令为 ifconfig 网卡名称(如 eth0) promiscmacvlan 典型的拓扑如下macvlan 的创建命令如下docker network create -d macvlan --subnet172.16.10.0/24 -- gateway172.16.10.1 -o parenteth0 mac17. ipvlan 网络ipvlan 和 overlay 都可以实现不同主机上的容器之间的通讯但是 ipvlan 是所有容器都 在一个网段相当于在一个 vlan 里面然后可以通过不同的子接口对应不同网段实 现不同容器之间的通讯。而 overlay 可以实现不同网段之间的通讯。ipvlan 的 l2 网络 示例如下ipvlan 的创建命令参考如下docker network create -d ipvlan --subnet192.168.1.0/24 -- gateway192.168.1.1 -o ipvlan_model2 -o parenteth0 pub_net深入理解 docker Bridge 网络网络介绍Docker Bridge 网络采用内置的 bridge 驱动bridge 驱动底层采用的是 Linux 内核中 Linux bridge 技术。就网络而言bridge 网络是在网络段之间转发流量的链路层设备 而网桥可以是在主机内核中运行的硬件设备或软件设备就 Docker 而言桥接网络使 用软件网桥 docker0它允许连接到同一网桥网络的容器进行通信同时提供与未连 接到该网桥网络容器的隔离。Docker Container 的 bridge 桥接模式可以参考下图• 创建步骤Bridge 桥接模式的实现步骤主要如下1. Docker Daemon 利用 veth pair 技术在宿主机上创建两个虚拟网络接口设备假 设为 veth0 和 veth1。而 veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报 文都会将报文传输给另一方。2. Docker Daemon 将 veth0 附加到 Docker Daemon 创建的 docker0 网桥上。保证 宿主机的网络报文可以发往 veth03. Docker Daemon 将 veth1 添加到 Docker Container 所属的 namespace 下并被 改名为 eth0。如此一来保证宿主机的网络报文若发往 veth0则立即会被 eth0 接收 实现宿主机到 Docker Container 网络的联通性同时也保证 Docker Container 单独使用 eth0实现容器网络环境的隔离性。
RELATED

相关推荐

具身智能创新原理初探(197):基于潜变量解耦的物理数据内爆机制研究

具身智能创新原理初探(197):基于潜变量解耦的物理数据内爆机制研究

前沿技术探索:TVA智能体(简称TVA)TVA智能体(Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强…

📅 2026/10/30 4:29:55
超级智能体关键机制研究(12):四级分层映射与全链路闭环的内在逻辑

超级智能体关键机制研究(12):四级分层映射与全链路闭环的内在逻辑

前沿技术探索:TVA智能体(简称TVA) TVA智能体(Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度…

📅 2026/10/30 4:29:55
CSV 游标流式导出

CSV 游标流式导出

推荐:方案 A — CSV 游标流式导出核心思路:不一次性加载,MySQL 游标分批取 → 写一行 → flush → 释放 → 下一批。while (true) {SELECT ... WHERE id > $lastId LIMIT 5000; ← 只取 5000 行│foreach → fputcsv($fp) …

📅 2026/10/30 4:29:54
MORE NEWS

更多资讯

📰

SpringBoot+Android高校实践教学系统开发实践

1. 项目背景与核心价值这个毕业设计项目瞄准了高校实践教学中的数字化管理痛点。在传统模式下,教师发布任务、学生提交报告、成绩评定等环节往往通过微信群、邮箱或纸质文档完成,存在信息分散、流程低效、数据难以追溯等问题。我们团队开发的这套系统&am…

📰

OpenCut:开源AI视频剪辑工具全解析

1. OpenCut:开源视频剪辑工具的新选择在视频创作日益普及的今天,剪辑软件的选择成为创作者面临的首要问题。专业软件价格昂贵,订阅制模式让长期使用成本居高不下;而免费工具往往功能受限,或带有水印等使用限制。OpenCu…

📰

.NET彩票代购程序源码解析:订单结算、资金对账与二次开发

简介:晓风彩票代购程序源码 v5.0.2 面向彩票合买代购平台开发者与 .NET 技术学习者,提供一套覆盖会员安全检测、投注记录查询、代理分销和后台管理的网站代码,可用于搭建或研究彩票网络销售系统。压缩包共 6 个文件,约 13.44MB&am…

📰

昇腾NPU索引类算子优化与实现解析

1. 索引类算子概述与核心价值在昇腾CANN生态中,索引类算子(Index Operators)是处理张量数据定位与重组的关键工具集。这类算子主要实现对输入张量的特定位置进行读取、修改或重组操作,其性能直接影响模型训练和推理过程中数据预处…

📰

Cocos2d-x中GAF框架的2D骨骼动画开发指南

1. GAF框架在Cocos2d-x中的核心价值解析GAF(Generic Animation Format)作为专业的2D骨骼动画解决方案,在Cocos2d-x游戏开发中扮演着关键角色。这个源自Flash时代的动画格式,经过多年演进已经发展成为跨平台的动画中间件&#xff0…

📰

ITIL4运维管理变革:从流程到价值的数字化转型

1. ITIL4时代下的运维管理变革ITIL4的发布标志着IT服务管理进入全新阶段。作为全球公认的IT服务管理最佳实践框架,ITIL4不仅继承了前代版本的核心理念,更在数字化时代背景下进行了全面革新。这套框架正在重新定义企业IT运维的"游戏规则"&#…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬