docker网络

Docker网络简介

  Docker容器内部运行应用之间交互依赖于大量不同的网络,Docker对于容器之间、容器与外部网络和VLAN之间的连接均有相应解决方案。
  Docker网络架构源自容器网络模型(CNM)的方案,该方案支持插接式连接,Libnetwork是Docker对CNM的一种实现,提供了Docker核心网络架构的全部功能,同时,Libnetwork提供了本地服务发现和基础的容器负载均衡解决方案。Docker还封装了一系列本地驱动,覆盖了大部分常见的网络需求,如单机桥接网络、多机覆盖网络,并支持接入现有VLAN。

基础理论

  在顶层设计中,Docker网络架构由以下三部分组成:

CNM:设计标准,规定了Docker网络架构的基础组成要素

  CNM定义了三个基本要素:沙盒、终端、网络,沙盒是一个独立的网络栈,包括以太网接口、端口、路由表及DNS配置;终端就是虚拟网络接口,主要负责创建连接,将沙盒连接到网络;网络则是802.1d网桥的软件实现,类似交换机,因此网络就是需要交互的终端集合,并且终端之间相互独立,三个组件的连接如下图所示:


CNM

  CNM与容器进行关联的方式就是沙盒被放置在容器内部,为容器提供网络连接,如下所示:


CNM与容器进行关联

  上图中容器A与容器B是可以相互通信的,因为都接入了网络A,但是容器B的两个终端之间则不能相互通信

Libnetwork:CNM的具体实现,实现了CNM的核心组件

  Libnetwork采用go语言编写,实现了CNM定义的三个组件,同时还实现了本地服务发现、容器负载均衡、网络控制层和管理层功能。

驱动:通过实现特定网络拓扑的方式来拓展该模型的能力

  驱动负责实现数据层,关系如下所示:


控制层、管理层与数据层关系

Docker网络类型

  • 单机桥接网络
    单机桥接网络是指该网络只能在单个Docker主机上运行,并且只能与所在Docker主机上的容器进行连接,且这时802.1d桥接的一种实现(二层交换机)。
  • 多机覆盖网络
    适用于多机环境,允许单个网络包含多个主机。

你可能感兴趣的:(docker网络)