Docker网络(CNM、Libnetwork和驱动)简介

  • 内容
  • 评论
  • 相关

网络已经无处不在。每当基础设施出现问题时,被抱怨的通常是网络,很大一部分原因是,网络负责连接一切——无网络,无 APP!

在 Docker 早期阶段,网络设计确实非常复杂,那时候配置网络几乎是一种乐趣。

Docker 在容器内部运行应用,这些应用之间的交互依赖于大量不同的网络,这意味着 Docker 需要强大的网络功能。幸运的是,Docker 对于容器之间、容器与外部网络和 VLAN 之间的连接均有相应的解决方案。

后者对于那些需要跟外部系统(如虚拟机和物理机)的服务打交道的容器化应用来说至关重要。

Docker 网络架构源自一种叫作容器网络模型(CNM)的方案,该方案是开源的并且支持插接式连接。

Libnetwork 是 Docker 对 CNM 的一种实现,提供了 Docker 核心网络架构的全部功能。不同的驱动可以通过插拔的方式接入 Libnetwork 来提供定制化的网络拓扑。

为了实现开箱即用的效果,Docker 封装了一系列本地驱动,覆盖了大部分常见的网络需求。其中包括单机桥接网络(Single-Host Bridge Network)、多机覆盖网络(Multi-Host Overlay),并且支持接入现有 VLAN。

Docker 生态系统中的合作伙伴通过提供驱动的方式,进一步拓展了 Docker 的网络功能。Libnetwork 提供了本地服务发现和基础的容器负载均衡解决方案。

基础理论

在顶层设计中,Docker 网络架构由 3 个主要部分构成:CNM、Libnetwork 和驱动。

  • CNM 是设计标准。在 CNM 中,规定了 Docker 网络架构的基础组成要素。
  • Libnetwork 是 CNM 的具体实现,并且被 Docker 采用,Libnetwork 通过 Go 语言编写,并实现了 CNM 中列举的核心组件。
  • 驱动通过实现特定网络拓扑的方式来拓展该模型的能力。

下图展示了顶层设计中的每个部分是如何组装在一起的。

顶层设计

本文标题:Docker网络(CNM、Libnetwork和驱动)简介

本文地址:http://www.hosteonscn.com/5095.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注