Docker网络架构三剑客CNM,Libnetwork和Driver

news2024/9/22 15:26:29

Docker网络架构主要由三部分组成:CNM,Libnetwork和Driver。

1.CNM

CNM(Container Network Model)是一种网络模型,用于定义容器的网络架构和实现容器之间的通信。

这其中也有三要素:

  • 沙盒:Sandbox:Sandbox是容器的网络运行环境,类似于一个隔离的网络命名空间。每个容器都有自己的Sandbox,其中包含网络接口、IP地址、路由表等网络配置。Sandbox确保容器之间的网络隔离。
  • 终端:Endpoint:Endpoint是容器网络的终端点,用于处理容器的网络通信。每个容器连接到一个或多个Endpoint,并通过Endpoint进行网络数据包的接收和发送。Endpoint提供了容器与网络之间的桥梁。
  • 网络:Network:Network是一组相关的Endpoint的集合,它定义了容器之间的通信规则和机制。每个Network都有唯一的标识符和配置选项。容器可以连接到一个或多个Network,实现不同的网络拓扑和通信方式。801.1d网桥的软件实现,是需要交互的终端的集合。

大体框架就是: 我外面套一个容器,容器里面有沙盒,沙盒上还有终端。 终端负责跟网络进行数据交互,然后无限制拷贝容器ABCD这个样子~

2.Libnetwork

CNM是设计规范,而Libnetwork是开源的、由GO语言编写的、跨平台的CNM的标准实现。

Libnetwork除了 实现了CNM的三个组件、还实现了本地服务发现,容器负载均衡,以及网络控制层与管理层功能。

Libnetwork的主要目标是提供一个可插拔、可扩展的网络架构,使得Docker容器可以在不同的网络环境中灵活地通信和交互。

Libnetwork的特点和功能包括:

  1. 多种网络驱动程序:Libnetwork支持多种网络驱动程序,包括Bridge、Overlay、Macvlan、Host等。这些驱动程序提供了不同的网络模式和通信方式,满足不同应用场景的需求。

  2. 网络抽象层:Libnetwork提供了一个网络抽象层,将底层的网络细节屏蔽起来,使得容器可以使用相同的网络API进行通信,无论使用哪种网络驱动程序。

  3. 网络插件:Libnetwork支持网络插件机制,允许第三方开发者编写自定义的网络插件,以扩展和定制网络功能。这使得Libnetwork可以适应各种不同的网络场景和需求。

  4. 动态网络配置:Libnetwork支持动态的网络配置,可以在容器运行时动态地添加、删除或修改网络配置。这使得容器可以灵活地适应不同的网络环境和需求。

通过Libnetwork,Docker容器可以方便地创建、连接和管理网络,实现容器之间的通信和与外部网络的连接。它提供了一个统一的网络管理接口,简化了网络配置和管理的复杂性,使得Docker网络更加灵活、可扩展和易用。

3.Driver

在Docker中,Driver(驱动程序)是用于扩展和定制Docker的关键组件之一。Driver负责实现与底层系统或平台的交互,提供特定功能或能力的扩展。

以下是几种常见的Driver:

  1. Container Runtime Driver:负责与底层容器运行时进行交互,例如Docker默认使用的Containerd或者其他可选的容器运行时,如CRI-O、rkt等。Container Runtime Driver实现了容器的生命周期管理、容器的创建、启动、停止、销毁等操作。

  2. Network Driver:用于实现容器的网络连接和通信。Docker提供了多种内置的Network Driver,如Bridge、Overlay、Macvlan、Host等,用于创建不同类型的容器网络。同时,也支持第三方开发的网络驱动插件,以满足特定网络需求。

  3. Volume Driver:负责实现容器的数据卷功能。Docker的Volume Driver用于管理容器的数据卷,可以将宿主机上的目录或文件映射到容器中,实现数据的持久化和共享。Docker支持多种Volume Driver,如Local Volume Driver、AWS EBS、Azure Disk等。

  4. Storage Driver:用于管理容器镜像的存储和管理。Docker的Storage Driver负责将容器镜像存储在宿主机上,并提供镜像的读取、写入和管理功能。Docker支持多种Storage Driver,如Overlay2、Aufs、Device Mapper等,用于实现镜像的存储和管理。

这些Driver通过接口和插件机制与Docker引擎进行交互,扩展和定制了Docker的功能和能力。它们使得Docker可以适应不同的运行时环境、网络环境和存储需求,提供更灵活、可扩展和可定制的容器化解决方案。


不管使用的是哪种网络类型,其工作原理都是相似的。

通过Docker命令可以查看当前主机所连接的网络及网络类型。

在这里插入图片描述

4.总结

这里只是说了一下docker网络架构的一些知识,docker网络仍有很多内容需要学习。


ok。我已讲完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于matlab使用无限阵列分析对大型阵列中的互耦进行建模(附源码)

一、前言 此示例使用无限数组分析对大型有限数组进行建模。晶胞上的无限阵列分析揭示了特定频率下的扫描阻抗行为。此信息与隔离元件图案和阻抗的知识一起使用,以计算扫描元件图案。然后,使用数组中的每个元素都具有相同扫描元素模式的假设对大型有限数组…

造纸工厂配电室环境监控系统的应用案例与硬件选型

摘要:智能配电室环境监控系统可实现自动巡检、自动预警等功能,减少人员到现场巡视次数,能及早发现设备的潜在风险,迅速检测故障,节约维护保养时长,为配电生产检修、运行、各业务的标准化、规范化管理提供有…

1:即使设计-ui:尺寸和单位

一: 1: 一倍尺寸 378*812 2:二倍尺寸 750*1624 3:三倍尺寸 1125*2436 二:PX和PT px:物理像素 pt:逻辑像素 pt只存在一倍图中 在一倍图,ptpx,二倍图 1px2pt 三:DP和SP

AI开源路在何方丨2023智源大会精彩回顾

导读 当下,AI开源已经成为了人类开源创新的主战场,是超大规模人类智力协同的最佳组织形式。得益于开源协作持续不断地推进,AI在这个时代飞速发展。可以说如果没有开源社区建设,就不会有今天人工智能的成就。 在2023智源大会AI开源…

【python】基于multiprocessing.Pool实现python并行化的坑和解决方案

坑1:apply_async调用的子函数不执行或执行不彻底的解决方案 解决:使用apply_async时传入error_callback检查报错 from multiprocessing import Pooldef processFolder(idx, folders, o_dir):train_mesh TrainMeshes(folders)output_path os.path.join…

python小游戏——骰子猜大小

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 我们已经基本学完了,逻辑判断和循环的用法&#…

Maven历史版本的下载

Maven历史版本的下载 打开Maven官网https://maven.apache.org/ 点击Download 点击Maven 3 archives

持续优化 XView 性能,大促弹窗搭投实践 | 京东云技术团队

背景 618 大促来了,对于业务团队来说,最重要的事情莫过于各种大促营销。如会场、直播带货、频道内营销等等。而弹窗作为一个极其重要的强触达营销工具,通常用来渲染大促氛围、引流主会场、以及通过频道活动来提升频道复访等。因此&#xff0…

Apache JMeter配置步骤压力测试实例

一. 安装环境:................................................................................................................ 2 二.安装步骤:...................................................................................…

QGis出图

工程——新建打印布局。 水平垂直参考线的妙用,很好用。 【【QGIS出图教程】免费软件!地理科研论文制图,出研究区位图,比Arcgis出图好使】

快速入门SringCloud

认识微服务 微服务是一种经过良好架构设计的分布式架构方案,微服务的特征有: 单一职责:微服务拆分粒度小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复开发面向服务:微服务对外暴露…

linux 资源包安装详细教程

linux 资源包安装详细教程 一、离线下载安装1.1 下载1.2 安装1.3 错误:依赖检测失败 - 解决方案1.4 查看安装的包情况 二、在线安装 一、离线下载安装 1.1 下载 点击进入网页:linux资源包下载链接:pkgs.org在搜索栏输入需要的包&#xff0c…

d3dcompiler_47.dll丢失怎么解决(解决方案)

d3dcompiler_47.dll在Windows操作系统和 DirectX应用程序中使用此 DLL 文件,包括游戏,图形处理软件,CAD软件和其他3D应用程序中。如果电脑提示“由于找不到d3dcompiler_47.dll,无法继续执行此代码”,“d3dcompiler_47.dll缺失”&a…

C#多语言切换

第一步建立工程 第二步:拖拽控件 第三步选择窗体 第四步修改窗体localizable 属性为 true 如下图 第五步 修改language 属性 如下图 第六步:修改各个控件的字符名称 会出现下面的资源文件(注意之前是没有资源文件的) 第七步&…

Druid 数据库密码加密-代码详解

这次来详细说下 Druid 数据库密码加密-代码详解 第一种方法使用原生加解密 首先需要使用druid的密码加密功能加密密码 > 找到druid jar文件地址 执行 加密命令 java -cp druid-1.2.10.jar com.alibaba.druid.filter.config.ConfigTools you_password 会得到以下信息 priva…

回顾 | Learn From Microsoft Build Ⅱ:Data

点击蓝字 关注我们 编辑:Alan Wang 排版:Rani Sun 微软 Reactor 为帮助广开发者,技术爱好者,更好的学习 .NET Core, C#, Python,数据科学,机器学习,AI,区块链, IoT 等技术&#xff0…

动态隐藏显示底部Tab栏

方式1 路由源信息 方式2 css样式 css功能:让盒子盖住整个页面 给div.city添加.page-cover的类(让div.city盖住页面的tabbar) /* 让盒子盖住整个页面 */ .page-cover {position: relative;z-index: 2;height: 100vh;background-color: #fff;…

计算机组成原理(期末或考研备考)-计算机系统概述重点

1.1计算机发展历程 1946第一台电子数字计算机(ENIAC)第一代计算机(1946-1957)-- 电子管;体积大,容量小,成本高,速度慢。第二代计算机(1958-1964)-- 晶体管;运算速度提升…

java之路—— SpringMVC的基本详解

文章目录 前言一、 核心的组件二、基本实现流程三、MVC的基本配置使用 前言 Spring MVC是一个用于构建Web应用程序的基于MVC(Model-View-Controller)设计模式的框架。 它是Spring Framework的一部分,提供了一种灵活、可扩展且功能强大的方式…

Android APT 系列 (三):APT 技术探究

APT 介绍 什么是 APT ? APT 全称 Annotation Processing Tool,翻译过来即注解处理器。引用官方一段对 APT 的介绍:APT 是一种处理注释的工具, 它对源代码文件进行检测找出其中的注解,并使用注解进行额外的处理。 APT 有什么用?…