Docker学习(11) Docker 网络(上)
2019-11-08 本文已影响0人
August________
Docker学习(11) Docker 网络
- Docker网络体系的基本原理:容器网络模型、以及Libnetwork
Docker网络简介
- Docker的网络架构源自一个叫做容器网络模型(CNM)
- Libnetwork是Docker对CNM的一种实现,提供了Docker核心网络架构的全部功能。
- 为了实现开箱即用的效果,Docker封装了一系列的本地驱动,包括:
- 单机桥接网络(Single-Host Brige Network)
- 多机覆盖网络(Multi-Host Overlay)
- Libnetwork提供了本地服务发现和容器的负载均衡解决方案。
Docker网络——详解
基础理论
- Docker的网络架构主要由3个部分过程:CNM、Libnetwork和驱动
CNM
- CNM是docker网络的设计标准:规定了Docker网络架构的基础组成要素。
- 具体内容:https://github.com/docker/libnetwork
- CNM定义了三个基本要素:沙盒(Sandbox)、终端(Endpoint)和网络(network)
- 沙盒:独立的网络桟,包括以太网的接口、端口、路由表以及NDS配置。
- 终端:虚拟网络接口,和普通网络接口一样,主要负责创建网络,在CNM中,主要是将沙盒连接到网络
- 网络:是802.1d网桥的软件实现,网络就是需要交互终端的集合,并且终端直接相互集合。
- docker环境中最小的调度单位是容器。
Libnetwork
- Libnetwork是CNM的具体实现,通过Go语言编写的,实现了CNM列出的核心组件。
- Libnetwork实现了CNM定义的3个组件。还实现了本地发现功能,基于Ingress的容器负载均衡,以及网络控制层和管理层的功能。
驱动
-
通过实现特定网络拓扑的方式来拓扑该模型的能力。
-
驱动负责实现了网络的数据层。
-
Docker封装了内置驱动,包括bridge,Overlay以及macvlan