docker(7、容器网络1)跨主机网络概述

1、跨主机网络概述

Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题
跨主机网络方案包括:
docker 原生:overlay 和 macvlan
第三方方案: flannel、weave 和 calico
docker 网络,不断有新的方案开发出来 如此众多的方案是通过 libnetwork & CNM与 docker 集成在一起的

一、libnetwork
libnetwork 是 docker 容器网络库,最核心的内容是其定义的 Container Network Model (CNM),这个模型对容器网络进行了抽象,由以下三类组件组成:

Sandbox
Sandbox 是容器的网络栈,包含容器的 interface、路由表和 DNS 设置。
Linux Network Namespace 是 Sandbox 的标准实现。Sandbox 可以包含来自不同 Network 的 Endpoint。

Endpoint
Endpoint 的作用是将 Sandbox 接入 Network。Endpoint 的典型实现是 veth pair,后面我们会举例。
一个 Endpoint 只能属于一个网络,也只能属于一个 Sandbox。

Network
Network 包含一组 Endpoint,同一 Network 的 Endpoint 可以直接通信。
Network 的实现可以是 Linux Bridge、VLAN 等。

二、CNM

示例:

 

如图所示两个容器,一个容器一个 Sandbox,每个 Sandbox 都有一个 Endpoint 连接到 Network 1,第二个 Sandbox 还有一个 Endpoint 将其接入 Network 2.


libnetwork CNM 定义了 docker 容器的网络模型,按照该模型开发出的 driver 就能与 docker daemon 协同工作,实现容器网络。
docker 原生的 driver 包括 none、bridge、overlay 和 macvlan,第三方 driver 包括 flannel、weave、calico 等。

 

发布了62 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/cojn52/article/details/104686233
今日推荐