跨主机网络概述 – 每天5分钟玩转 Docker 容器技术(48)
前面已经学习了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题。本章的重点则是讨论跨主机容器间通信的方案。
跨主机网络方案包括:
docker 原生的 overlay 和 macvlan。
第三方方案:常用的包括 flannel、weave 和 calico。
docker 网络是一个非常活跃的技术领域,不断有新的方案开发出来,那么要问个非常重要的问题了:
如此众多的方案是如何与 docker 集成在一起的?
答案是:libnetwork 以及 CNM。
libnetwork CNMlibnetwork 是 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 等。
下面我们以 docker bridge driver 为例讨论 libnetwork CNM 是如何被实现的。
这是前面我们讨论过的一个容器环境:
两个 Network:默认网络 “bridge” 和自定义网络 “my_net2”。实现方式是 Linux Bridge:“docker0” 和 “br-5d863e9f78b6”。
三个 Enpoint,由 veth pair 实现,一端(vethxxx)挂在 Linux Bridge 上,另一端(eth0)挂在容器内。
三个 Sandbox,由 Network Namespace 实现,每个容器有自己的 Sanbox。
接下来我们将详细讨论各种跨主机网络方案,首先学习 Overlay。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/53865.html
DockerlinuxUbuntu相关文章
- docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。「建议收藏」
- 前端vue+docker打包发布
- yum直接安装docker-ce报错找不到安装包
- Docker 各种常用软件地址全家桶
- linuxdocker常用命令_查看docker
- docker容器和主机同网段_docker桥接模式下外网访问
- docker离线安装及配置tab补全_Docker安装
- [Docker]如何使用Docker部署一个go程序
- 【已解决】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runnin
- Docker服务的拉取镜像命令(docker pull 镜像名称)
- Docker Swarm搭建集群和常用命令操作
- 「 【Docker】docker的基础使用介绍(小白如何使用docker) 」
- 「 【Docker】用docker运行2048小游戏(玩转docker) 」
- 「 【Docker】设置docker加速器(如何使docker下载速度变快) 」
- 【Rust日报】2022-12-05 探索 docker 的 WASM 技术预览
- 【Docker 系列】docker 学习 四,镜像相关原理
- 【Docker】容器的安装与使用
- Docker容器的重启策略及docker run的–restart选项详解程序员
- docker-分布式镜像仓库Harbor
- 安装配置 flannel每天5分钟玩转Docker容器技术(59)
- 准备 overlay 网络实验环境 – 每天5分钟玩转 Docker 容器技术(49)
- Docker 的两类存储资源 – 每天5分钟玩转 Docker 容器技术(38)
- 容器如何访问外部世界?- 每天5分钟玩转 Docker 容器技术(36)
- none 和 host 网络的适用场景 – 每天5分钟玩转 Docker 容器技术(31)
- 镜像的缓存特性 – 每天5分钟玩转 Docker 容器技术(14)
- Docker 组件如何协作?- 每天5分钟玩转容器技术(8)
- docker挂载ISO/分区时报failed to setup loop device: No such file or directory