当前位置: 首页 > news >正文

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 驱动程序是最佳选择。

相关文章:

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

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

ESP32-CAM模块Arduino环境搭建测试

ESP32-CAM模块Arduino环境搭建测试 一.ESP32OV2640摄像头模块CameraWebServer视频查看 二.测试ESP32-CAM(后续称cam模块)代码是否上传执行成功测试 const int led0 12; const int led1 13;void setup() {// put your setup code here, to run once:pinMode(led0, OUTPUT);pin…...

webassembly001 webassembly简述

WebAssembly 官方地址:https://webassembly.org/相关历史 https://en.wikipedia.org/wiki/WebAssembly https://brendaneich.com/2015/06/from-asm-js-to-webassembly/WebAssembly(缩写为Wasm)是一种基于堆栈的虚拟机的二进制指令格式。Wasm 被设计为编…...

vue 使用C-Lodop打印小票

先从官网下载js文件 https://www.lodop.net/LodopDemo.html 打开安装程序,一直下一步既可,我这边已经安装过就不演示了。 // 引入 import { getLodop } from /utils/CLodopfuncs.js;// 使用 let LODOP getLodop()let Count LODOP.GET_PRINTER_COUNT…...

【C++进阶(二)】STL大法--vector的深度剖析以及模拟实现

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 vector 1. 前言2. 熟悉vector的接口函数2.1 vec…...

1. import pandas as pd 导入库

【目录】 文章目录 1. import pandas as pd 导入库1. pandas库的概念2. 导入pandas库2.1 常规导入2.2 别名导入 3. 别名的作用4. 课堂练习 【正文】 1. import pandas as pd 导入库 【学习时间】 10分钟 1. pandas库的概念 pandas:熊猫panda的复数, …...

DMK5框选变量之后不显示其他位置的此变量高亮

使用软件MDK5.3.8版本 如下在2的位置选择之后,其他同样的变量没有高亮,因为1的原因折叠了; 展开折叠之后就可以了...

0061__Appium

Appium Documentation - Appium Documentation APP自动化测试(3)-Appium Inspector介绍_六天测试工程师的博客-CSDN博客 https://github.com/appium/appium-inspector https://github.com/appium/appium-desktop https://github.com/appium/appium...

【DEVOPS】需求跟踪管理全面落地

0. 目录 1. 现状/背景2. 需求管理存在的问题3. 改进思路/措施4. 所谓"禅道尚未普及/铺开"5. 最后6. 相关 1. 现状/背景 近期又被领导问到"如何对项目过程中的需求进行量化和跟踪管理"。这真是一个狗皮膏药似的问题,反反复复地,隔一…...

算法修炼Day57|647. 回文子串 ● 516.最长回文子序列

LeetCode:647. 回文子串 647. 回文子串 - 力扣(LeetCode) 1.思路 暴力思路见对应代码… 动规解法:画图推导动规公式,当前状态由左侧和左下角推出,所以首层应该采用倒序的方式,内部采用正序的方式。 2.…...

呈现数据的精妙之道:选择合适的可视化方法

在当今数据时代,数据可视化已成为理解和传达信息的重要手段。然而,选择适合的数据可视化方法对于有效地呈现数据至关重要。不同的数据和目标需要不同的可视化方法,下面我们将探讨如何选择最佳的数据可视化方法来呈现数据。 1. 理解数据类型&a…...

数据结构(Java实现)-java对象的比较

元素的比较 基本类型的比较 在Java中&#xff0c;基本类型的对象可以直接比较大小。 对象比较的问题 Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较 默认情况下调用的就是equal方法&#xff0c;但是该方法的比较规则是&#xff1a;没有比较引用变量引用对象的…...

Wolfram Mathematica 13 for Mac 数学计算工具

Wolfram Mathematica for Mac是一款功能强大、划时代的科学计算软件。它结合了数字和符号计算引擎、图形系统、编程语言、文本系统以及与其他应用程序的高级连接&#xff0c;在许多功能方面处于世界领先地位&#xff0c;截至2009年&#xff0c;它是使用最广泛的数学软件之一。人…...

系统架构设计高级技能 · Web架构

现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 系统架构设计高级技能 Web架构 一、Web架构介绍1.1 Web架构涉及技术1.2 单台服务…...

再写CentOS7升级OpenSSL-1.0.1U

本文在CentOS7.4以及TencentOS 2.4上测试通过。 原系统自带OpenSSL 1.0.2k-fips。 编译安装方法跟之前的没啥区别。 从官网下载1.0.1u版https://www.openssl.org/source/ 使用tar解包 tar xfz openssl-1.0.1u.tar.gz 依次执行如下&#xff1a; cd openssl-1.0.1u ./con…...

HBase--技术文档--基本概念--《快速扫盲》

官网 Apache HBase – Apache HBase™ Home 阿里云hbase 云数据库HBase_大数据存储_订单风控_数据库-阿里云 云数据库 HBase-阿里云帮助中心 基本概念 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop&#xff0c;采用列式存储方式&#xff0c;可…...

如何利用SFTP协议远程实现更安全的文件传输 ——【内网穿透】

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 1. 安装openSSH1.1 安装SSH1.2 启动ssh 2. 安装cpolar2.1 配置termux服务 3. 远程SFTP连接配置3.1 查看生成的随机公…...

深度学习8:详解生成对抗网络原理

目录 大纲 生成随机变量 可以伪随机生成均匀随机变量 随机变量表示为操作或过程的结果 逆变换方法 生成模型 我们试图生成非常复杂的随机变量…… …所以让我们使用神经网络的变换方法作为函数&#xff01; 生成匹配网络 培养生成模型 比较基于样本的两个概率分布 …...

sql入门-多表查询

案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…...

软考A计划-网络工程师-必考知识点-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...