Docker网络-探索容器网络如何相互通信

当今世界,企业热衷于容器化,这需要强大的网络技能来正确配置容器架构,因此引入了 Docker Networking 的概念。Docker 是一种容器化平台,允许您在独立、轻量级的容器中运行应用程序和服务。Docker 提供了一套强大的网络功能,用于管理容器之间的通信和容器与外部网络的连接。

1.什么是 Docker?

这就是理解 Docker 网络所需的所有理论。现在,展示网络是如何创建的以及容器如何相互通信。要了解 Docker,您需要了解以前如何部署应用程序的历史以及现在如何使用容器部署应用程序。

 正如您在上图中看到的,旧方式在主机上有应用程序。 因此,n 个应用程序共享该操作系统中存在的库。但是,通过容器化,操作系统将拥有一个内核,这是所有应用程序之间唯一通用的东西。 因此,应用程序无法访问彼此的库。因此,简单来说, Docker是一个用于开发、交付和运行应用程序的开放平台,使用户能够借助容器将应用程序与基础设施分离,从而快速交付软件。那么,这些容器在各种情况下如何相互通信呢?

2.Docker的工作流

在深入研究 Docker 网络之前,我先向您展示 Docker 的工作流程。

正如您在上图中看到的。开发人员在易于编写的 Docker File中编写规定应用程序需求或依赖项的代码,并且该 Docker File会生成 Docker 镜像。因此,特定应用程序所需的任何依赖项都存在于此映像中。现在,Docker 容器只不过是 Docker 镜像的运行时实例。这些镜像被上传到 Docker Hub(Docker 镜像的 Git 存储库),其中包含公共/私有存储库。

您也可以从公共存储库中提取镜像,也可以将自己的镜像上传到 Docker Hub。然后,质量保证或生产团队等各个团队将从 Docker Hub 提取该镜像并准备自己的容器。这些单独的容器通过网络相互通信以执行所需的操作,这就是 Docker 网络。因此,您可以将 Docker Networking 定义为一个通信通道,所有隔离的容器通过该通道在各种情况下相互通信以执行所需的操作。

3.Docker网络的目标

灵活性——Docker 通过使不同平台上的任意数量的应用程序能够相互通信来提供灵活性。

跨平台——Docker 可以轻松地跨平台使用,借助 Docker Swarm 集群可以跨各种服务器工作。

可扩展性——Docker是一个完全分布式的网络,它使应用程序能够单独增长和扩展,同时确保性能。

去中心化——Docker 使用去中心化网络,从而能够实现应用程序的传播和高可用性。如果资源池中突然缺少容器或主机,您可以提供额外的资源或转而使用仍然可用的服务。

用户友好——Docker 可以轻松实现服务部署的自动化,使它们在日常生活中易于使用。

支持– Docker 提供开箱即用的支持。因此,能够非常简单直接地使用 Docker 企业版并获得所有功能,使得 Docker 平台非常易于使用。

为了实现上述目标,您需要称为容器网络模型的东西。

4.容器网络模型(CNM)

在告诉你到底什么是容器网络模型之前,我先给你介绍一下在理解 CNM 之前需要用到的 Libnetwork。Libnetwork 是一个开源 Docker 库,它实现了构成 CNM 的所有关键概念。

因此,容器网络模型 (CNM)  标准化了使用多个网络驱动程序为容器提供网络所需的步骤。CNM 需要像控制台这样的分布式键值存储来存储网络配置。CNM 具有 IPAM 插件和网络插件的接口。IPAM 插件 API 用于创建/删除地址池以及分配/取消分配容器 IP 地址,而网络插件 API 用于创建/删除网络以及在网络中添加/删除容器。

CNM主要构建在5个对象上:网络控制器、驱动程序、网络、端点和沙箱。容器网络模型对象

网络控制器:提供 Libnetwork 的入口点,为 Docker 引擎公开简单的 API 来分配和管理网络。由于 Libnetwork 支持多个内置和远程驱动程序,网络控制器使用户能够将特定驱动程序附加到给定网络。

驱动程序:拥有网络并负责通过多个驱动程序参与来管理网络,以满足各种用例和部署场景。

网络:在属于同一网络并与其他网络隔离的一组端点之间提供连接。因此,每当创建或更新网络时,相应的驱动程序都会收到该事件的通知。

端点: 为网络中容器公开的服务与网络中其他容器提供的其他服务提供连接。端点代表一个服务,不一定是一个特定的容器,端点在集群内也具有全局范围。

沙箱:当用户请求在网络上创建端点时创建。沙箱可以有多个端点连接到不同的网络,代表容器的网络配置,例如 IP 地址、MAC 地址、路由、DNS。

以上就是 CNM 的 5 个主要目标。

5.网络驱动程序

主要有5个网络驱动:Bridge、Host、None、Overlay、Macvlan

Bridge: 桥接网络是docker在主机上创建的私有默认内部网络。因此,所有容器都会获得一个内部 IP 地址,并且这些容器可以使用该内部 IP 相互访问。当您的应用程序在需要通信的独立容器中运行时,通常会使用 Bridge 网络。

Host:此驱动程序消除了 docker 主机和 docker 容器之间的网络隔离,以直接使用主机的网络。因此,这样一来,您将无法在同一主机、同一端口上运行多个 Web 容器,因为该端口现在是主机网络中所有容器所共用的。

None:在这种网络中,容器不附加到任何网络,并且无法访问外部网络或其他容器。因此,当您想要完全禁用容器上的网络堆栈并且 仅创建环回设备时,请使用此网络 。

Overlay:创建一个跨越参与 swarm 集群的所有节点的内部专用网络。因此,Overlay 网络促进了 swarm 服务和独立容器之间的通信,或者不同 Docker 守护进程上的两个独立容器之间的通信。

Macvlan: 允许您为容器分配 MAC 地址,使其显示为网络上的物理设备。然后,Docker 守护进程通过容器的 MAC 地址将流量路由到容器。当您希望直接连接到物理网络而不是通过 Docker 主机的网络堆栈路由时,Macvlan 驱动程序是最佳选择。

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

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

相关文章

Redis 10 大数据类型

1. which 10 1. redis字符串 2. redis 列表 3. redis哈希表 4. redis集合 5. redis有序集合 6. redis地理空间 7. redis基数统计 8. redis位图 9. redis位域 10. redis流 2. 获取redis常见操作指令 官网英文:https://redis.io/commands 官网中文:https:/…

python+mysql+前后端分离国内职位数据分析(源码+文档+指导)

系统阐述的是使用国内python职位数据分析系统的设计与实现,对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了 Flask框架和MySql数据库技术搭建系统的整体…

测试渗透前置知识-行业术语

测试渗透前置知识-行业术语 1.肉鸡3.远控4.黑页5.挂马6.大马7.小马8.一句话后门9.后门10.拖库11.社工库12.撞库13.提权14.网络钓鱼15.社会工程学攻击16.rootkit17.IPC$18.弱口令19.默认共享20.shell21.交互式shell22.webshell23.溢出24.注入25.注入点26.旁站入侵27.C段渗透28.内…

TRYLIVE CLOTHING:AR个人魔法试衣间,试尽网上任何衣服

没有有这样的时候?在网上看中了一件衣服或者裤子,就算所有信息都知道了也不知道衣服是否合身,穿上去感觉如何,有的衣服看上去好看,上身效果不一定要。就算在实体店,有时看了很多衣服想试,但又不…

基于3D人像复原技术的试衣平台

基于3D人像复原技术的试衣平台 摘要 近年来,随着社会的进步与发展,人们的物质生活得到了极大的丰富,对衣食住行的要求也越来越高,为了更好地适应现代化生活的需求,网上试衣软件、平台的研究也一直没有停止过&#xf…

虚拟试衣镜 疫情期间实体服装店的救世主还是理想丰满现实骨感的“拔草神器”?

文/智能相对论(aixdlun) 作者/离离 在科技发达的今天,3D虚拟试衣镜早已不是新鲜的概念。越来越多商场、购物平台与服装企业都曾尝试推出此服务,但虚拟试衣镜却似乎迟迟未受到消费者青睐。 不用穿,也能试 虚拟试衣镜…

基于Android平台的虚拟试衣关键技术研究

摘要:首先根据角点检测方法自动获取人体关键尺寸;然后根据实例检索算法获取与客户体形最接近的模特试衣效果;再使用移植配准与肤色融合实现头像移植;最后再Andriod平台上实现初步的系统模拟,为提高网上服装交易的成功率…

130.【Spring注解】

Spring 注解 (一)、AOP功能测试1.AOP 使用步骤(1).导入AOP对应的依赖(2).编写业务逻辑类(3).编写切面类(4).编写配置类(5). 编写测试类 (二)、AOP 原理1.EnableAspectJAutoProxy(1).EnableAspectJAutoProxy源码(2).AspectJAutoProxyRegistrar 自定义注册bean源码(3).打断点进行…

n卡驱动要下java吗_N卡驱动要下载哪一个?NVIDIA显卡驱动下载方法

显卡驱动程序更新周期不定,单就使用第三方驱动更新工具,可能并不能及时的看到新的显卡驱动更新动态,不过我们在该显卡的官网却是可以很方便的选择NVIDIA显卡驱动下载,如何下载N卡驱动呢?请看下文。 NVIDIA显卡驱动下载…

Linux 安装Nvidia GPU显卡驱动

文章目录 安装Nvidia GPU驱动什么是nouveau驱动?Centos7.7安装Nvidia GPU驱动Ubuntu 18.04安装Nvidia GPU驱动准备工作开始安装安装cuda 检测NVIDIA驱动是否成功安装集显与独显的切换 调节显卡功耗 安装Nvidia GPU驱动 [推荐]Linux安装NVIDIA显卡驱动的正确姿势 参…

2024年天津市大学软件学院专升本专业课考试大纲

天津市大学软件学院2024年“高职升本科”联合招生专业考试大纲 一、考试性质 天津市大学软件学院“高职升本科”联合招生专业考试是由合格的高职高专毕业生参加的选拔性考试。学校根据考生的成绩,按照已确定的招生计划,德、智、体全面衡量,…

【亲测有效】Linux系统安装NVIDIA显卡驱动

文章目录 一、NVIDIA显卡驱动安装的方法1、3种安装方式:建议方式二2、原显卡驱动卸载 二、方式一(官网下载驱动包)步骤一:查询显卡支持的驱动步骤二:通过命令进行驱动安装 二、方式二(software & updat…

基于单片机的智能数字电子秤proteus仿真设计

一、系统方案 1、当电子称开机时,单片机会进入一系列初始化,进入1602显示模式设定,如开关显示、光标有无设置、光标闪烁设置,定时器初始化,进入定时器模式,如初始值赋值。之后液晶会显示Welcome To Use Ele…

React与Vue:两大前端巨头的深度对决

引言 在当今的前端开发领域,React和Vue无疑是两大巨头。它们各自有着独特的历史和哲学,但都为开发者提供了强大的工具来构建高效、响应式的web应用。这篇文章将深入探讨这两个框架的差异,帮助开发者更好地理解它们的优势和劣势。 React与Vu…

乐高虚拟搭建软件Studio 2.0怎么导入缺少的零件库文件

Studio 2.0是目前非常流行的乐高虚拟拼搭软件,功能也很强大。我们在利用Studio 2.0进行虚拟拼搭的时候,经常会遇到软件自带的零件库不全的问题。像一些电机、线性执行器、传感器等比较稀有的零件,在软件自带的零件库里是没有的。 导入方法&a…

C#中动态生成鼠标图案

CreateIconIndirect()的API函数可以生成Icon图像 Icon和Cursor实际是同一个结构,fIcon字段区别是否为Icon 字段hbmMask和hbmColor指定掩码图和色彩图 当然,更好的是用Bitmap.MakeTransparent()处理一下透明 这样掩码图和色彩图都指向处理后的位图 public double Decode…

c语言 鼠标指针图标,WIN7系统鼠标图案DIY!自己动手,美不胜收!-win7鼠标指针...

我以前的文章已经给大家分享了系统登陆画面、C盘减肥等等系统DIY技巧,今天给大家带来鼠标样式DIY方法。再美的东西也会看腻,再好的美食也要加点新料,是时候让你的鼠标整个容了!下面看小编教你这个实用小妙招。Let‘s go&#xff0…

自定义鼠标图案

自定义鼠标图案 .ablumInfo_style1{cursor:url("images/L.cur"),-moz-cell;} <a href"#" class"ablumInfo_style1">自定义鼠标提示图标 </a> 其中url内是你自定义图案的路径&#xff0c;-moz-cell是FF的专有属性。 注意以下几点…

Win11怎么设置鼠标箭头图案?Win11更换鼠标图案的方法

Win11怎么设置鼠标箭头图案&#xff1f;如果你觉得电脑默认的鼠标图案看腻了&#xff0c;想要换个有趣味性的图案&#xff0c;那么应该如何操作呢&#xff1f;本期教程就为大家带来两种更换鼠标图案的方法。 ​还有更多重装系统教程可参考 方法一&#xff1a; 1、桌面找到&…

杨柳目-杨柳科-柳属-柳树-柳絮:柳絮

ylbtech-杨柳目-杨柳科-柳属-柳树-柳絮&#xff1a;柳絮 柳絮&#xff0c;即柳树的种子&#xff0c;上面有白色绒毛&#xff0c;随风飞散如飘絮&#xff0c;所以称柳絮。柳树&#xff1a;乔木&#xff0c;高可达18m&#xff0c;树冠开展疏散。树皮灰黑色&#xff0c;不规则开裂…