当前位置: 首页 > 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和各种游…...

kafka复习:(17)seekToBeginning的用法

从分区的开始进行消费&#xff0c;因为kafka会定期清理历史数据&#xff0c;所以分区开始的位移不一定为0。seekToBeginning只是从目前保留的数据中最小的offset进行消费 package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.consume…...

C# textBox1.Text=““与textBox1.Clear()的区别

一、区别 textbox.Text "" 和 textbox.Clear() 都可以用于清空文本框的内容&#xff0c;但它们之间有一些细微的区别。 textbox.Text "": 这种方式会将文本框的 Text 属性直接设置为空字符串。这样会立即清除文本框的内容&#xff0c;并将文本框显示为空…...

CnetSDK .NET OCR SDK Crack

CnetSDK .NET OCR SDK Crack CnetSDK.NET OCR库SDK是一款高度准确的.NET OCR扫描仪软件&#xff0c;用于使用手写、文本和其他符号等图像进行字符识别。它是一款.NET OCR库软件&#xff0c;使用Tesseract OCR引擎技术&#xff0c;可将字符识别准确率提高99%。通过将此.NET OCR扫…...

Python最新面试题汇总及答案

一、基础部分 1、什么是Python&#xff1f;为什么它会如此流行&#xff1f;Python是一种解释的、高级的、通用的编程语言。Python的设计理念是通过使用必要的空格与空行&#xff0c;增强代码的可读性。它之所以受欢迎&#xff0c;就是因为它具有简单易用的语法 2、为什么Pytho…...

设计模式(单例模式,工厂模式),线程池

目录 什么是设计模式? 单例模式 饿汉模式 懒汉模式 工厂模式 线程池 线程池种类 ThreadPoolExcutor的构造方法: 手动实现一个线程池 什么是设计模式? 计算机行业程序员水平层次不齐,为了让所有人都能够写出规范的代码,于是就有了设计模式,针对一些典型的场景,给出一…...

在mybatis中的mapper.xml中如何使用parameterType实现方法单个传参,对象传参,多参数传参.

在MyBatis的mapper.xml文件中&#xff0c;可以使用parameterType属性来指定方法的参数类型。parameterType属性用于指定传递给映射方法的参数类型&#xff0c;这将影响到MyBatis在映射方法执行时如何处理参数。 以下是三种不同情况下如何在mapper.xml中使用parameterType实现方…...

No120.精选前端面试题,享受每天的挑战和学习

文章目录 浏览器强制缓存和协商缓存cookie&#xff0c;localStorage、sessionStoragejs闭包&#xff0c;原型&#xff0c;原型链箭头函数和普通函数的区别promise的状态扭转 浏览器强制缓存和协商缓存 浏览器缓存是浏览器用于提高网页加载速度的一种机制。浏览器缓存分为强制缓…...

c# 访问sqlServer数据库时的连接字符串

//sql server 身份验证的场合&#xff0c; 连接字符串 private string ConnstrSqlServer "server服务器名称;uid登录名称;pwd登录密码;database数据库名称"; //windows 身份验证连接字符串 private string ConnstrWindows "server服务器名称;database数据库…...

排序算法概述

1.排序算法分类 **比较类算法排序&#xff1a;**通过比较来决定元素的时间复杂度的相对次序&#xff0c;由于其时间复杂度不能突破 O ( n l o g n ) O(nlogn) O(nlogn)&#xff0c;因此也称为非线性时间比较类算法 **非比较类算法排序&#xff1a;**不通过比较来决定元素间的…...

ChatGPT在高等教育中的应用利弊探讨

​人工智能在教育领域的应用日益广泛。2022年11月OpenAI开发的聊天机器人ChatGPT在全球范围内流传开来&#xff0c;其中用户数量最多的国家是美国(15.22%)。由于ChatGPT应用广泛&#xff0c;具有类似人类回答问题的能力&#xff0c;它正在成为许多学生和教育工作者的可信赖伙伴…...

wordpress 支持woocommerce/深圳网站开发

第一步选中数据库&#xff0c;点击查询&#xff0c;创建空触发器 CREATE TRIGGER trig_stu AFTER INSERT ON student FOR EACH ROW begin -- 触发器内容开始-- 触发器内容主体&#xff0c;每行用分号结尾end 第二步写在数据库中找到触发器&#xff0c;构建内容主体语句&#…...

用nas 做网站/360营销平台

整理了一份全国省市区SQL插入脚本&#xff0c;并配上抓取数据读取插入数据库源码&#xff0c;附件下载地址&#xff1a;https://files.cnblogs.com/files/101Love/Region.rar 转载于:https://www.cnblogs.com/101Love/p/7493868.html...

做英语题目的网站/百度做广告怎么做

JVM监控工具 Java的安装包自带了很多优秀的工具&#xff0c;善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下&#xff1a; jps 用途&#xff1a;jps用来查看JVM里面所有进程的具体状态, 包括进程ID&#xff0c;进程启动的路径等等。 常用参数&#xff1a; -l: 输…...

做网购的有哪几个网站/东莞seo管理

用JQuery Validate框架&#xff0c;在IE8下验证报错问题解决参考文章&#xff1a; &#xff08;1&#xff09;用JQuery Validate框架&#xff0c;在IE8下验证报错问题解决 &#xff08;2&#xff09;https://www.cnblogs.com/destimarve/p/5511257.html 备忘一下。...

做网站找哪个部门/网络营销策划的主要特点

项目问题时有发生&#xff0c;想让项目获得成功&#xff0c;项目经理需要有一个计划来快速有效地应对任何出现的问题。这是最佳实践问题管理过程的一部分&#xff0c;更是良好项目管理的核心本质。 项目问题的四种类型 任何事情都可能成为项目过程中影响项目计划的问题。项目…...

wordpress 文章索引/无锡seo公司

这是一个允许您流式传输子流程输出的解决方案。事后使用相同的模板静态加载它(假设您的子进程将其自己的输出记录到文件中;如果没有&#xff0c;则将进程输出记录到日志文件中留给读者练习)from flask import Response, escapefrom yourapp import appfrom subprocess import P…...