1. 程式人生 > >Docker網絡概述

Docker網絡概述

ren 管理 poi isp line 會有 mes switch 調用

概述

為了標準化網絡的驅動開發步驟和支持多種網絡驅動,Docker公司在libnetwork中使用了CNM(Container Network Model)。CNM定義了構建容器虛擬化網絡的模型,該模型進一步對 Docker 的網絡結構進行了細分,提出了三個概念:network、sandbox 和 endpoint。同時還提供了可以用於開發多種網絡驅動的標準化接口和組件。

技術分享圖片

如上圖所示,Docker daemon通過調用libnetwork對外提供的API完成網絡的創建和管理等功能。libnetwrok中則使用了CNM來完成網絡功能的提供。而CNM中主要有沙盒(sandbox)、端點(endpoint)、網絡(network)這3種組件。

在容器網絡模型中,每一個容器內部都包含一個 Sandbox,其中存儲著當前容器的網絡棧配置,包括容器的接口、路由表和 DNS 設置,Linux 使用網絡命名空間實現這個 Sandbox,每一個 Sandbox 中都可能會有一個或多個 Endpoint,在 Linux 上就是一個虛擬的網卡 veth,Sandbox 通過 Endpoint 加入到對應的網絡中,這裏的網絡可能就是我們在上面提到的 Linux 網橋或者 VLAN。

三大核心組件

  • 沙盒(sandbox):
  • 一個沙盒也包含了一個容器網絡棧的信息。沙盒可以對容器的接口、路由和DNS設置等進行管理。沙盒的實現可以是Linux netwrok namespace、FreeBSD jail或者類似的機制。一個沙盒可以有多個端點和多個網絡。

  • 端點(endpoint):
  • 一個端點可以加入一個沙盒和一個網絡。端點的實現可以是veth pair、Open vSwitch內部端口或者相似的設備。一個端點只可以屬於一個網絡並且只屬於一個沙盒。

  • 網絡(network)
  • 一個網絡是一組可以直接互相聯通的端點。網絡的實現可以是Linux bridge、VLAN等。一個網絡可以包含多個端點。

    六種驅動模型

    基於 libnetwork CNM,將各個網絡模型以插件或 Driver 的形式集成到 Docker 網絡中來,與 docker daemon 協同工作,實現容器網絡。libnetwork中內置的6種驅動則為libnetwork提供了技術分享圖片

    不同類型的網絡服務。

  • Docker 原生的 Driver 包括單主機的 none、host、bridge、joined container 和 多主機的 overlay、macvlan。
  • 第三方 Driver 就包括多主機的 flannel、weave、calico 等。

  • Docker網絡概述