Docker容器化2023版本——Docker 网络

169 阅读2分钟

简介

Docker在容器内运行应用程序,这些应用程序需要与其他应用程序进行通信。其中一些其他应用程序是容器,而另一些则不是。这意味着Docker需要强大的网络功能。

幸运的是,Docker提供了解决方案,可以实现容器之间的网络连接,以及连接到现有网络和VLAN。后者对于与外部服务(如虚拟机和物理服务器)交互的容器化应用程序至关重要。

Docker网络基于一个名为容器网络模型(Container Network Model,CNM)的开源可插拔架构。libnetwork是CNM的参考实现,它提供了Docker的所有核心网络功能。驱动程序插入到libnetwork中,以提供特定的网络拓扑。

为了实现出色的开箱即用体验,Docker附带了一组用于最常见网络需求的本地驱动程序。这些包括单主机桥接网络、多主机覆盖网络,以及插入现有VLAN的选项。生态系统合作伙伴可以通过提供自己的驱动程序来进一步扩展功能。

最后但并非最不重要的是,libnetwork提供了本机的服务发现和基本的容器负载平衡功能。

这就是大致的情况。现在让我们深入了解细节。

深入

我们将按照以下方式组织本章的这个部分:

  • 理论基础
  • 单主机桥接网络
  • 多主机覆盖网络
  • 连接到现有网络
  • 服务发现
  • 入口负载均衡

理论基础

在最高层次上,Docker网络包括三个主要组件:

  1. 容器网络模型(Container Network Model,CNM)
  2. Libnetwork
  3. 驱动程序

容器网络模型(CNM) 是设计规范,概述了Docker网络的基本构建块。

Libnetwork 是CNM的实际实现。它作为Moby项目的一部分进行了开源,并被Docker和其他项目使用。

驱动程序 通过实现特定的网络拓扑(如VXLAN覆盖网络)来扩展该模型。

图11.1以非常高的层次展示了它们是如何组合在一起的。

image.png