浅谈容器网络

1.什么是容器网络

容器网络是一种新兴的应用程序沙箱机制,用于家庭桌面和网络规模的 企业网络 解决方案,其概念与虚拟机类似。容器内部与主机和所有其他容器隔离的是一个功能齐全的 Linux 环境,具有自己的用户、文件系统、进程和网络堆栈。容器内的所有应用程序都只能访问或修改容器内可用的文件或资源。

可以同时运行多个容器,每个容器都有自己的安装和依赖项。当应用程序的较新版本可能需要升级依赖项,这可能会导致与服务器上运行的其他应用程序依赖项发生冲突时,这特别有用。与虚拟机不同,容器共享主机资源,而不是完全模拟计算机上的所有硬件,这使得容器比虚拟机更小、更快,并减少了开销。特别是在网络规模应用程序的背景下,容器被设计为虚拟机的替代品,作为微服务架构的部署平台。

容器还具有可移植性的特点,例如Docker这个容器引擎,允许开发者将一个容器及其所有依赖项打包在一起。然后可以下载该容器包。下载后,容器可以立即在主机上运行。

容器网络允许容器与其他容器或主机通信以共享资源和数据。

现代容器网络旨在标准化和优化容器数据流,创建隔离区域,允许大量容器以高效、安全的方式进行通信。已经提出了多个标准来管理容器网络,包括容器网络模型(CNM)和容器网络接口(CNI)。

Docker 和 Kubernetes 等流行的容器平台使用以下网络模型:

  • 无 –最简单的网络模式是环回接口,其中容器不与外部网络通信。
  • 网桥 –内部主机网络,允许同一主机上的容器之间进行通信。
  • 主机 –允许容器与主机共享其网络命名空间,从而实现高速网络。
  • 覆盖 –确保连接到两个不同覆盖网络的容器彼此隔离,并且无法通过本地网桥进行通信。
  • 底层 –将主机接口公开给主机上运行的虚拟机或容器。

2.容器网络如何工作

容器网络是一种虚拟化形式,其概念与虚拟机 (VM) 类似,但也有显着差异。首先,容器方法是操作系统虚拟化的一种形式,而虚拟机是硬件虚拟化的一种形式。

在虚拟机管理程序上运行的每个虚拟机都有自己的操作系统、应用程序和库,并且能够封装持久数据、安装新操作系统、使用与主机不同的文件系统或使用不同的内核版本。

相反,容器是镜像的“运行实例”,是短暂的操作系统虚拟化,它会旋转起来执行一些任务,然后被删除和遗忘。由于容器的短暂性,与需要更大地址空间的虚拟机相比,系统用户运行的容器实例要多得多。

为了创建隔离,容器依赖于两个 Linux 内核功能:命名空间和 cgroup。为了让容器拥有自己的系统视图,并将其与其他资源隔离,为每个资源创建一个命名空间,并且不与其余系统共享。然后,控制组 (Cgroup) 用于监视和限制系统资源,如 CPU、内存、磁盘 I/O、网络等。

3.容器网络的好处

容器正在迅速被采用,取代虚拟机作为微服务平台。

容器有几个主要优点:

  • 与现有工作负载一起运行容器化应用程序: 机器可以在同一基础设施上与传统虚拟机一起运行容器化应用程序,从而提供灵活性和速度。
  • 将可移植性与安全性、可见性和管理相结合: 由于容器的固有设计,它可以通过沙箱、主机资源透明度、任务管理和执行环境可移植性来实现更高的安全性。
  • 轻松利用现有的基础设施和规模: 使用现有的 SDDC 可以避免对基础设施进行成本高昂且耗时的重新架构,从而导致孤岛 - 当不同部门在同一组织内维护自己的 IT 基础设施时,就会出现孤岛。由于每个部门的技术配置存在差异,这种“筒仓效应”在实施组织范围内的 IT 策略和升级时会产生问题。重新集成孤岛是一个成本高昂且耗时的过程,可以通过容器网络来避免。
  • 为开发人员提供与 Docker 兼容的接口: 已经熟悉 Docker 的开发人员可以通过与 Docker 兼容的接口在容器中开发应用程序,然后通过自助管理门户或 UI 进行配置。

4.容器网络模型

容器网络模型(CNM)是Docker提出的一个标准。它已被许多项目(例如 libnetwork)采用,并提供与各种产品的集成,包括Project Calico(Calico 开源)、Cisco Contiv、开放虚拟网络 (OVN)、VMware、Weave 和 Kuryr。

以下是通过实施 CNM 实现的 libnetwork 的主要功能:

  • 网络沙箱 –包含容器网络配置的隔离环境。它作为容器内的网络堆栈工作。
  • 端点 –成对构建的网络接口。它允许您将接口的一端放置在网络沙箱中,另一端放置在指定网络中。它确保端点仅加入一个网络,而多个端点存在于一个网络沙箱中。
  • 网络 –允许相互通信的唯一可识别端点的集合。
  • 用户定义的标签 – CNM 允许您使用标签标志定义标签。这些标签作为元数据在驱动程序和 libnetwork 之间传递。标签使运行时能够通知驱动程序的行为。

 图 1:Libnetwork 提供 Docker 守护进程和网络驱动程序之间的接口。

Libnetwork 是 CNM 规范的规范实现。Libnetwork 提供了 Docker 守护进程和网络驱动程序之间的接口。网络控制器负责将驱动程序与网络配对。每个驱动程序负责管理其拥有的网络,包括向该网络提供的服务,例如 IPAM。每个网络一个驱动程序,多个驱动程序可以与连接到多个网络的容器同时使用。驱动程序被定义为本地驱动程序(内置于 libnetwork 或支持 Docker)或远程驱动程序(第三方插件)。本机驱动程序有 none、bridge、overlay 和 MACvlan。远程驱动程序可以带来任意数量的功能。驱动程序也被定义为具有本地作用域(单主机)或全局作用域(多主机)。

5.容器网络接口

容器网络接口(CNI)是CoreOS提出的标准。它是作为一个最小规范创建的,作为网络插件和容器运行时之间的简单契约。CNI 已被许多项目采用,包括 Apache Mesos、Kubernetes 和 rkt。

以下是 CNI 的主要特征:

  • CNI 使用 JSON 模式来定义 CNI 网络插件所需的输入和输出。
  • CNI 使您能够使用一个容器运行多个插件,该容器连接由不同插件驱动的网络。
  • CNI 在配置 JSON 文件中描述网络,并在调用 CNI 插件后将它们实例化为新的命名空间。
  • CNI 插件可以支持两个命令,用于向网络添加和删除容器网络接口。

图 2:CNI 是向网络添加和删除容器的最小规范。

CNI 是作为一个最小规范创建的,与许多网络供应商工程师一起构建,作为容器运行时和网络插件之间的简单契约。JSON 模式定义了 CNI 网络插件的预期输入和输出。

多个插件可以同时运行,容器加入由不同插件驱动的网络。网络在配置文件中以 JSON 格式进行描述,并在调用 CNI 插件时实例化为新的命名空间。CNI 插件支持两个命令来向网络添加和删除容器网络接口。Add 在创建容器时由容器运行时调用。当删除容器实例时,容器运行时会调用删除。

6.容器网络的类型

目前使用的容器网络有五种类型:它们的特征集中在每个容器的 IP 与每个 Pod 的 IP 模型以及需要网络地址转换 (NAT) 与不需要转换的情况。

  • None: 容器接收网络堆栈;然而,它缺乏外部连接。此模式对于测试容器、为以后的网络连接暂存容器以及分配给不需要外部通信的容器非常有用。
  • Bridge: 在内部主机网络上桥接的容器,并允许与同一主机上的其他容器进行通信。无法从主机外部访问容器。桥接网络是 Docker 容器的默认网络。
  • Host: 此配置允许创建的容器共享主机的网络命名空间,从而授予容器对主机所有网络接口的访问权限。外部网络配置最不复杂,这种类型由于共享网络接口而容易发生端口冲突。
  • Underlay:  Underlay 直接向主机上运行的容器开放主机接口,并且无需端口映射,使其比桥接器更高效。
  • Overlay: 覆盖使用网络隧道在主机之间进行通信,允许容器在托管在不同主机上时就像在同一台计算机上一样。

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

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

相关文章

汽车制造业外发文件时 如何阻断泄密风险?

汽车制造业是我国国民经济发展的支柱产业之一,具有产业链长、关联度高、就业面广、消费拉动大等特性。汽车制造行业景气度与宏观经济、居民收入水平和固定资产投资密切相关。 汽车制造业产业链长,关联度高,汽车制造上游行业主要为钢铁、化工…

https 的ssl证书过期处理解决方案(lighthttpd)

更换证书:lighthttpd 配置文件位置:/opt/vmware/etc/lighttpd/lighttpd.conf (配置文件的最底部 G快速来到底部) 方案一:阿里云申请免费的证书 这里公司内网环境没有配置域名,可以创建一个临时域名&…

IDEA启动Tomcat两个端口的方式 使用nginx进行反向代理 JMeter测试分布式情况下synchronized锁失效

目录 引出IDEA启动Tomcat两个端口的方式1.编辑配置2.添加新的端口-Dserver.port80833.service里面管理4.启动后进行测试 使用nginx进行反向代理反向代理多个端口运行日志查看启动关闭重启 分布式情况下synchronized失效synchronized锁代码启动tomcat两个端口nginx反向代理JMete…

uniapp 实现切换tab锚点定位到指定位置

1.主要使用uniapp scroll-view 组件的scroll-into-view属性实现功能 2.代码如下 <scroll-view:scroll-into-view"intoView"><u-tabsclass"tabs-list"change"tabChange":list"tabList"></u-tabs><view id"1&…

macOS - 安装 Python 及地址

文章目录 Python 官方安装包Pip3Applications - PythonMiniconda多个python环境有多种方式安装 python,比如 Python 官方包、anaconda、miniconda、brew 等 这里记录使用 Python 官方包进行安装,和 miniconda 安装方式,以及安装后 各执行文件、安装包的地址。 明确这些地址后…

Ceph入门到精通-大流量10GB/s LVS+OSPF 高性能架构

LVS 和 LVSkeepalived 这两种架构在平时听得多了&#xff0c;最近才接触到另外一个架构LVSOSPF。这个架构实际上是LVSKeepalived 的升级版本&#xff0c;我们所知道LVSKeepalived 架构是这样子的&#xff1a; 随着业务的扩展&#xff0c;我们可以对web服务器做水平扩展&#xf…

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。

MySQL回表是什么?哪些情况下会回表

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…

iview时间控件 动态不可选日期 可选择24小时范围内 时间往后退24小时

演示 html 设定 起始时间 触发on-change 方法结束时间 options 动态设置不可选择的日期。 <!-- 起始时间 --> <FormItem :label"$t(startTime)" prop"startTime"><DatePickertransfertype"datetime":placeholder"$t(pleas…

php 系列题目,包含查看后端源代码

一、弱类型比较问题 原则&#xff1a; 1.字符串和数字比较&#xff0c;字符串回被转换成数字。 "admin" 0&#xff08;true) admin被转换成数字&#xff0c;由于admin是字符串&#xff0c;转换失败&#xff0c;变成0 int(admin)0,所以比较结果是ture 2.混合字符串转…

RD35M22AT、RD35M22BL、RD35M22DL插装式泄压阀

RD28M22AL、RD28M22BL、RD28M22CL、RD28M22DT、RD28M22AT、RD35M22AT、RD35M22BL、RD35M22DL、RD35M22WL插装式泄压阀 此结构在泄压时的压力非常稳定&#xff0c;若使用在低压时,请注意通过流量,不可超过35LPM。结构最大内漏量约(5滴/分, 设定压力的85%) 压力设定达到 210 ba…

抖音seo矩阵系统源代码开发部署分享

一、 开发步骤分享 抖音SEO矩阵系统源代码开发部署分享&#xff0c;需要经验丰富的开发人员和服务器管理人员&#xff0c;以下是大致的步骤&#xff1a; 确定你需要的功能和设计&#xff0c;确定开发人员和设计师的角色和任务分配&#xff0c;以及开发进度和计划。 确定服务器…

Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤

基于微服务JavaSpring Cloud Vue UniApp MySql实现的智慧工地云平台源码 智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段&#xff0c;为建筑施工现场提供智能硬件及物联网平台的解决方案&#xff0c;以实现建筑工地的实时化、可视化、多元化、智慧化…

[MyBatis系列②]Dao层开发的两种方式

目录 1、传统开发 1.1、代码 1.2、存在的问题 2、代理开发 2.1、开发规范 2.2、代码 ⭐mybatis系列①&#xff1a;增删改查 1、传统开发 传统的mybatis开发中&#xff0c;是在数据访问层实现相应的接口&#xff0c;在实现类中用"命名空间.id"的形式找到对应的映…

Elasticsearch 集成---框架集成SpringData-集成测试-索引操作

1.Spring Data 框架介绍 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的 开源框架。其主要目标是使得对数据的访问变得方便快捷&#xff0c;并支持 map-reduce 框架和云计 算数据服务。 Spring Data 可以极大的简化 JPA &a…

【Vue框架】 router和route是什么关系

前言 之前没太注意&#xff0c;写着写着突然发现它们貌似不太一样&#xff0c;记录以下&#xff0c;回顾的看总结就好。 1、总结✨ route&#xff1a;当前激活路由的对象&#xff0c;用于访问和操作当前路由的信息 router&#xff1a;管理多个route的对象&#xff0c;整个应…

windows下安装go环境 和vscode中go扩展

1. 首先安装GO Go下载地址&#xff1a;go.dev 选择相对应的版本&#xff0c;下载&#xff0c;运行安装程序&#xff0c;并打开命令提示符&#xff0c;运行 go env &#xff0c;确认已经安装go 注意关注其中GOPATH和GOROOT&#xff0c;这两个地址可以在系统环境变量中进行设置…

纸贵科技连续三年蝉联IDC中国 FinTech 50榜单

近日&#xff0c;国际权威市场研究机构IDC公布了“2023 IDC中国FinTech 50榜单”。作为领先的区块链技术和解决方案服务商&#xff0c;纸贵科技凭借过硬的区块链技术和丰富的金融科技创新成果&#xff0c;连续第三年荣登IDC中国FinTech 50榜单。 IDC中国FinTech 50榜单是金融科…

【Apollo】自动驾驶感知——毫米波雷达

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

Python科研数据可视化

在过去的20 年中&#xff0c;随着社会产生数据的大量增加&#xff0c;对数据的理解、解释与决策的需求也随之增加。而固定不变是人类本身&#xff0c;所以我们的大脑必须学会理解这些日益增加的数据信息。所谓“一图胜千言”&#xff0c;对于数量、规模与复杂性不断增加的数据&…