------------------------------------重要说明------------------------------------

本文内容都是参考Cloudman系列进行学习,是个人学习过程记录,与原版不同!

原版请参考cloudman《每天5分钟玩转Docker容器技术》Cloudman博客如下:

https://blog.51cto.com/cloudman

------------------------------------重要说明------------------------------------

前面已经学习了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题。本章的重点则是讨论跨主机容器间通信的方案。

跨主机网络方案包括:

1.docker 原生: overlay 和 macvlan

2.第三方方案:常用的包括 flannel、weave 和 calico

docker 网络是一个非常活跃的技术领域,不断有新的方案开发出来,那么要问个非常重要的问题了:

如此众多的方案是如何与 docker 集成在一起的?

答案是:libnetwork 以及 CNM

1. libnetwork & CNM

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

a) Sandbox

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

b) Endpoint

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

c) Network

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

d) 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 是如何被实现的。

------------------------------------重要说明------------------------------------

本文内容都是参考Cloudman系列进行学习,是个人学习过程记录,与原版不同!

原版请参考cloudman《每天5分钟玩转Docker容器技术》Cloudman博客如下:

https://blog.51cto.com/cloudman

------------------------------------重要说明------------------------------------

书籍:

1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html

2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

转载于:https://blog.51cto.com/hostman/2097392

17、《每天5分钟玩转Docker容器技术》学习--Multi-host网络相关推荐

  1. 回滚 - 每天5分钟玩转 Docker 容器技术(141)

    kubectl apply 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision. 默认配置下,Kubernet ...

  2. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)

    前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性.不过截止到现在,有一个重要问题还没有涉及:如何访问 service?这就是本节要讨论的问题. 为了便于分析 ...

  3. 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)

    上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点 ...

  4. 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)

    上一节已经部署好了 Graylog,现在学习如何用它来管理日志. 首先启动测试容器. docker run -d \ --log-driver=gelf \ --log-opt gelf-addres ...

  5. 日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)

    高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...

  6. k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)

    在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石. Cluster  Cluster 是计算.存储和网络资源的集合,Kubernetes 利用 ...

  7. 回收 PV - 每天5分钟玩转 Docker 容器技术(152)

    当 PV 不再需要时,可通过删除 PVC 回收. 当 PVC mypvc1 被删除后,我们发现 Kubernetes 启动了一个新 Pod recycler-for-mypv1,这个 Pod 的作用就 ...

  8. DaemonSet 典型应用场景 - 每天5分钟玩转 Docker 容器技术(129)

    Deployment 部署的副本 Pod 会分布在各个 Node 上,每个 Node 都可能运行好几个副本.DaemonSet 的不同之处在于:每个 Node 上最多只能运行一个副本. DaemonS ...

  9. Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)

    service 的容器副本会 scale up/down,会 failover,会在不同的主机上创建和销毁,这就引出一个问题,如果 service 有要管理的数据,那么这些数据应该如何存放呢? 选项一 ...

最新文章

  1. JADAK收购RFID方案商SkyeTek,增强竞争力
  2. 如何使用XML作为小型数据库
  3. Linux之文件管理(一)
  4. foxmail邮箱怎么导入邮件_163企业邮箱登录后怎么导入联系人?
  5. java poi 只能创建?,JAVA POI创建多个sheet的Excel文件,及多个sheet也创建失败原因
  6. UVa 1354 天平难题 枚举二叉树
  7. 使用std::thread线程相关函数,-static静态编译的程序运行时的一些常见错误
  8. php为什么搜不到字段,php-通过多个字段搜索.有时一个领域,有时不止一个领域
  9. 笨办法学 Python · 续 练习 4:处理命令行参数
  10. Silverligth API for ArcGIS应用程序IIS发布
  11. ReactJS快速入门
  12. java 生产mdb_Java生成mdb文件[MS Access文件]
  13. 【二次开发应用】安信可ESP32/ESP8266模组入网阿里生活物联网平台
  14. sql判断邮箱是否合法_用正则表达式验证邮箱与手机号的合法性
  15. 大鱼吃小鱼java源代码_大鱼吃小鱼 JAVA游戏源码
  16. 【数学建模】主成因分析
  17. 测试iphone硬件好坏的软件,如何检测Apple手机硬件是否损坏
  18. osgEarth示例分析——osgearth_skyview
  19. 会说话的好朋友:汤姆猫开发商Outfit7旗下应用盘点
  20. QQ拼音直接提权WIN8

热门文章

  1. react antd TextArea 中文输入法 autoSize
  2. 【WIN10】此用户无法登录,因为该账户当前已被禁用
  3. 2012年国家自然科学基金中标项目:软件工程相关方向
  4. 关于咖啡,与咖啡无关
  5. sa蛋OpenCV参数说明
  6. AD最新版本ad22,如何添加封装到库中
  7. 比对软件-blastN结果详解
  8. sqrt 和pow 的返回值类型错误({从小白开始c语言常见错误归纳第2弹)
  9. 什么样的选择会大于努力?如何选?
  10. 5月~给你的第三封信