Docker 网络 host、bridge、macvlan 工作原理

摘要

Docker 作为容器的主流平台,不仅仅提供了虚拟化隔离,同时也配备的网络隔离技术,并使用不同的网络驱动满足不同的场景,这篇文章对 Docker 的3种网络实现Host、Bridge、Macvlan进行模拟验证,并在实践中理解背后的基本原理。

Host 模式

Host 模式为容器实例直接使用 Host 网络能力,与 Host 共享网卡、路由、转发表等,不创建 netns,不进行隔离,如容器实例绑定了 80 端口,则可以通过访问 Host 的 80 端口访问到容器实例,这种模式当前只支持 Linux,不支持 MAC、windows 系统,容器实例中运行如下:

不仅仅 netns 可以共享,同一个 namespace 可以被多个容器实例共享。

Bridge 模式

Bridge 模式为在 Host 机器上为每一个容器或者多个容器创建 Network Namespace 进行网络隔离,并创建一对 veth,一端连接着 netns,一端连接着 Host 上的 bridge 设备,bridge 作为二层交换设备进行数据转发,可以用软件或硬件实现,Docker 使用 linux bridge 软件实现方式,并且 docker 使 FORWARD chain 默认策略为 DROP,不允许 bridge 容器实例与其他链路连通。在虚拟化技术中这种方式使最普遍最经典的方式,以下我们通过 netns、bridge 模拟实现。

模拟组网:

组网思路:

创建2个 bridge,2 台 Host,3 个 netns,3对 veth

分配 IP 地址,bridge 网关地址

检查 iptables 的配置,允许 FORWARD 为 ACCEPT,开启 ipv4 forward 转发标识位

给 Host 配置路由地址

网络接口配置如下:

确认和清理 iptables 规则

开启 ipv4 转发

配置对端路由

测试同一个 bridge 下二层连通性:

测试不同 bridge 下三层连通性:

macvlan 模式

在一些特定场景中,比如一些传统应用或者监控应用需要直接使用 HOST 的物理网络,则可以使用 kernel 提供的 macvlan 的方式,macvlan 是在 HOST 网卡上创建多个子网卡,并分配独立的 IP 地址和 MAC 地址,把子网卡分配给容器实例来实现实例与物理网络的直通,并同时保持容器实例的隔离性。Host 收到数据包后,则根据不同的 MAC 地址把数据包从转发给不同的子接口,在外界来看就相当于多台主机。macvlan 要求物理网卡支持混杂 promisc 模式并且要求 kernel 为 v3.9-3.19 和 4.0+,因为是直接通过子接口转发数据包,所以可想而知,性能比 bridge 要高,不需要经过 NAT。

结构如下:

macvlan 支持四种模式:

private:子接口之间不允许通信,子接口能与物理网络通讯,所有数据包都经过父接口 eth0

vepa(Virtual Ethernet Port Aggregator):子接口之间、子接口与物理网络允许通讯,数据包都经过 eth0 进出,要求交换机支持 IEEE 802.1Q。

bridge:子接口之间直接通讯,不经过父接口 eth0 ,性能较高,但是父接口 down 之后也同样丧失通讯能力。

passthru:Allows a single VM to be connected directly to the physical interface. The advantage of this mode is that VM is then able to change MAC address and other interface parameters.

所以模式都不能与 eth0 通信,并且 macvlan 在公有云上的支持并不友好。

1、private mode 模式

2、vepa 模式

与预期不符合的是不 10 不能 ping 通 11。

3、bridge 模式

4、passthru 模式

passthru 的模式在公有云上直接导致虚拟机网络不通,无法验证。

-END-

(0)

相关推荐

  • docker 网络实践

    #docker 网络模式环境 centos7.4 , Docker version 17.12.0-cedocker自带网络类型 bridge,host,none,container,overlay, ...

  • 详解如何解决docker容器无法通过IP访问宿主机问题

    这篇文章主要介绍了详解如何解决docker容器无法通过IP访问宿主机问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧问题起源在使用 docker 的过程中我不幸需要在 ...

  • Docker 网络(十一)

    Docker 通过网络驱动来支持容器的网络通信,默认情况下,Docker 提供两种网络驱动供我们使用,一个是 bridge,一个是 overlay.我们也可以自己写一个网络驱动插件,如果你足够大牛的话 ...

  • 网络中路由器的工作原理

    大家好,我是情报小哥! 01 路由器 前面小哥跟大家介绍了一下集线器和交换机的工作原理,今天该带来大家非常熟悉的路由器了,熟悉归熟悉,路由器在网络中到底是怎样工作的,估计还有一些朋友不是特别了解的. ...

  • 什么是网络爬虫?Python爬虫工作原理!

    随着互联网的发展,大家对于爬虫这个词已经不再陌生了.但是什么是爬虫?爬虫的工作原理是什么呢?对于IT小白还是非常疑惑的,今天小编就为大家详细的介绍一下. 什么是网络爬虫? 网络爬虫就是一种从互联网抓取 ...

  • 网络摄像机工作原理及网络监控系统架构

    随着视频技术的不断发展,出现了实时监控多路视频画面,将其同时提供给视频接收者的电视墙技术,多方视频会议和监控领域是这一技术的主要应用场景.在视频监控系统网络化.数字化的今天,高清网络摄像机.网络摄像机 ...

  • 【感应式IC卡】S50卡技术资料和工作原理

             S50卡,采用NXP MF1 IC S50制作的非接触智能卡,通常简称S50卡.Mifare 1K卡.M1卡或直接简称感应式IC卡,符合ISO14443A标准,拥有4字节UID号,是 ...

  • 一文轻松看懂区块链的工作原理

    作者注:这篇文章是写给非计算机专业的朋友的科普文,尽量避开了比较专业的细节.如果你是计算机相关专业,或者具备一定数据结构.算法.密码学的知识,建议直接看文末参考资料中的三篇博文,或者更专业的资料. 区 ...

  • PLC 工作原理与内部存储器使用规则(一)

    编前语:这是一篇对PLC的认识提出全新概念的.并把PLC工作原理解释得准确.清楚.明白的技术文章.其理论分析的方法,探讨问题的角度,与通常可见的书籍文章有较大的不同.现在推荐给<电子报>的 ...

  • 什么是锁相环?读懂它的基本组成和工作原理

    什么是锁相环?读懂它的基本组成和工作原理

  • 浪涌保护器的作用和工作原理

    浪涌保护器也叫避雷器.防雷器.是一种为低压供电系统,电子设备,仪器仪表,通讯线路等提供的安全防护的电子装置.当电气回路中,因雷电等外界因素,突然产生尖峰电压或电流时,浪涌保护器能在极短的时间内导通分流 ...

  • 【第2273期】搜索引擎工作原理

    前言 正文从这开始~~~ 搜索引擎的工作过程大体可以分为三个阶段: 1.对网页进行抓取建库 搜索引擎蜘蛛通过抓取页面上的链接访问其他网页,将获得的HTML代码存入数据库 2.预处理 索引程序对抓取来的 ...