深入解析容器与虚拟化:技术、对比与生态
深入解析容器与虚拟化:技术、对比与生态
文章目录
- 深入解析容器与虚拟化:技术、对比与生态
- 容器和虚拟化的基本概念和原理
- 容器的定义和特点
- 虚拟化的定义和特点
- 容器使用场景
- 容器和虚拟机的对比
- 虚拟化技术的四个特点
- 容器实现虚拟化的原理
- 常见容器引擎和容器生态的开源基金会
- 常见容器引擎
- Docker简介
- Docker的技术架构
- Containerd简介
- iSula简介
- 容器生态的标准与开源基金会
- 容器与虚拟化安全
- 安全容器的概念和技术
- 容器和虚拟机的融合 - 安全容器
- 容器隔离和安全性的挑战
- 容器运行时监控和安全策略
容器和虚拟化的基本概念和原理
容器的定义和特点
定义
容器是一个独立运行的软件包,包含应用程序、运行时环境和所有相关的依赖项(库、配置文件等)。它将应用程序与底层操作系统进行隔离,使应用程序能够在不同的主机上以一致的方式运行。
容器可以被看成是一种轻量级虚拟化技术,利用namespace和Cgroup等隔离技术,将一个或者一组进程运行在一个相对独立的资源空间内
特点
- 轻量级: 与传统虚拟机相比,容器更加轻量级,因为它们共享宿主操作系统的内核。每个容器只需包含应用程序所需的最小运行时组件,减少了资源消耗和启动时间。
- 高度可移植: 容器可以在不同的环境中运行,包括开发人员的本地机器、测试服务器和生产环境等。容器提供了一种可移植的部署方式,确保应用程序在不同环境中具有一致的行为。
- 快速启动和部署: 由于容器共享操作系统内核并且只运行所需的组件,它们的启动速度比传统虚拟机更快。容器可以在几秒钟内启动,并且可以快速部署和扩展,满足动态的需求。
- 隔离性: 容器在逻辑上隔离了应用程序及其运行时环境,使它们相互隔离并保护宿主系统的稳定性。每个容器都有自己的文件系统、进程空间、网络接口和用户空间。
- 可伸缩性: 容器技术可以支持水平和垂直的扩展,根据应用程序的需求进行快速的扩容或缩减。这种弹性能力使得容器在面对变化的负载和流量时非常有用。
虚拟化的定义和特点
定义
虚拟化是将计算机的硬件资源(如处理器、内存、存储和网络等)进行抽象和隔离,以创建多个虚拟的资源实例,每个实例都可以运行独立的操作系统和应用程序。
特点
- 资源的抽象化:虚拟化技术将物理资源抽象为虚拟资源,使它们可以被多个虚拟机或容器共享和使用。这样,每个虚拟机/容器就可以独立地管理和利用这些资源。
- 资源的隔离和安全性:虚拟化提供了强大的隔离机制,使每个虚拟机/容器之间相互隔离,互不干扰。这样可以保证应用程序之间的安全性和稳定性。
- 资源的动态分配和管理:虚拟化技术可以根据需求自动调整虚拟机/容器所需的资源,实现资源的弹性分配和管理。这样可以最大程度地提高资源利用率,并根据需求进行动态扩展或收缩。
- 虚拟机的迁移和高可用性:虚拟化技术使得虚拟机可以在物理主机之间进行迁移,实现负载均衡、故障恢复和高可用性。这样可以提高系统的可靠性和稳定性。
- 平台无关性:通过虚拟化,应用程序和操作系统可以独立于底层硬件平台运行。这意味着开发人员可以在不同的硬件平台上部署和运行相同的应用程序,提高了应用程序的可移植性和灵活性。
容器使用场景
- 部署无状态服务
- CI/CD、DevOps及微服务的场景
- 跨Region、跨数据中心的混合云场景
- 版本变更比较频繁的业务
容器和虚拟机的对比
优势
容器 | 虚拟机 | |
---|---|---|
启动速度 | 秒甚至毫秒启动 | 数秒至数十秒 |
系统内核 | 共享内核 | 不共享内核 |
实现技术 | 利用Linux内核技术Namespace/Cgroup等实现。 | 依赖虚拟化技术实现,由Hypervisor层实现对资源的隔离 |
隔离效果 | 进程级别的隔离 | 系统资源级别的隔离 |
资源消耗(性能) | 容器中的应用只是宿主机上的一个普通进程 | 使用虚拟化技术,就会有额外的资源消耗和占用 |
资源调用(敏捷性) | 应用进程直接由宿主机OS管理 | 应用进程需经过Hypervisor的拦截和处理,才能调用系统资源 |
运行数量 | 一台服务器上能启动1000+容器 | 一台服务器上一般不超过100台虚拟机 |
应用 | DevOps、微服务等 | 用于硬件资源划分 |
镜像 | 分层镜像 | 非分层镜像 |
不足
容器的实现方式注定了容器无法彻底的隔离,因此带来了一些不如虚拟机的地方
- 安全性:容器之间共享主机操作系统的内核,因此可能存在一些安全风险。例如,一个容器中的恶意应用程序可能会影响到其他容器或主机操作系统。
- 隔离性:容器之间的隔离级别较低,容器之间可以相互访问。如果一个容器被攻击或感染了病毒,它可能会影响到其他容器或主机操作系统。
- 资源限制:虽然容器可以使用 Linux 控制组(cgroups)和命名空间(namespace)等技术限制资源使用,但这些技术并不像虚拟机那样提供完全的资源隔离和限制。因此,容器之间可能会互相影响,导致资源争用和性能问题。
容器不仅是一种虚拟化技术,更重要的是一种应用打包机制
应用运行需要依赖包括操作系统在内的库,容器镜像可以将应用及其所有依赖进行打包,使应用在不同平台(开发、测试或者生产)上拥有相同的运行环境
容器提供的是PaaS服务
有了容器后,传统的应用部署方式发生了变化。以前用户需要先申请一个虚拟机或者安装一台物理机,然后使用脚本或者手动的方式部署应用。由于容器镜像将应用及其依赖进行了打包,部署时,仅需要将镜像解压即可
虚拟化技术的四个特点
- 分区:每个运行在容器内的应用都有自己的硬件资源
- 隔离:通过分区所建立的多个容器之间采用逻辑隔离措施,防止相互影响
- 封装:封装意味着将整个容器储存在独立于物理硬件的一小组文件中
- 独立:容器可以被运行在相同linux内核的linux发行版内,和硬件无关
容器实现虚拟化的原理
- 容器也是一种虚拟化技术
- 虚拟化是通过hypervisor进行硬件的模拟,从而实现虚拟化的
- 容器是容器引擎通过namespace和Cgroup对应用进行欺骗,从而实现虚拟化的
常见容器引擎和容器生态的开源基金会
常见容器引擎
Docker
其他
- Containerd
- Podman
- iSula
- Rocket
Docker简介
容器的精髓在于镜像,而docker是容器镜像标准的制定者,因此,学习容器是绕不开docker的
2013年,dotCloud公司将docker项目开源
Docker项目:
- GitHub上开发的Moby开源项目的一部分
- 遵循Apache License 2.0许可证协议
- Go语言编写
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器
Docker公司目前推出两个版本:
- Docker CE(社区版)
- Docker EE(企业版)
Docker的技术架构
Containerd简介
- Containerd是Docker公司于2017年捐赠给CNCF社区的一个项目
- 2019年2月28日,Containerd从CNCF毕业,是一个符合行业标准的运行时
- Containerd支持Linux系统和Windows系统
iSula简介
- 在居住中南美洲亚马逊丛林的巴西原住民眼里,iSula是一种非常强大的蚂蚁,学术上称为“子弹蚁”,因为被它咬一口,犹如被子弹打到那般疼痛,它是世界上最强大的昆虫之一
- iSula为全量的容器软件栈,包括引擎、网络、存储、工具集与容器OS
- iSulad作为其中轻量化的容器引擎与子弹蚂蚁“小个头、大能量”的形象不谋而合
容器生态的标准与开源基金会
OCI和CNCF
- OCI是由多家公司共同成立的基金会,以RunC为依据制定的一套容器和镜像的标准和规范
- CNCF是一个以kubernetes为核心的容器编排开源基金会
RunC和Runtime
- Runtime是对容器运行时的相关状态和操作进行管理的工具,所有的runtime共同遵守的OCI的标准和规范
- RunC是runtime的一种,由docker公司2015年发布的符合OCI规范的runtime工具
内容 | |
---|---|
bundle.md(Filesystem Bundle ) | bundle中包含了运行容器所需要的所有信息,主要是config.json文件和rootfs。Runtime根据bundle启动容器 |
config.md | 包含对容器实施标准操作所必需的元数据,存放于config.json文件中。如oci版本、rootfs路径、mount目录、process、platform、容器hostname等 |
config-linux.md | Linux平台上对config.md的扩展,内容也包含在config.json文件中。如namespace、devices、CgroupPath、resources、sysctl、readonlyPaths等 |
runtime.md | 定义了3部分内容:容器状态(如status、pid等)、容器相关操作(如create、kill等)、容器生命周期 |
runtime-linux.md | 是Linux平台上对runtime.md的补充 |
容器与虚拟化安全
安全容器的概念和技术
安全容器是指在容器化环境中增强应用程序和数据的安全性的技术措施。这些措施包括但不限于密钥管理、访问控制、安全审计、漏洞管理和防护等。
安全容器技术的目标是确保容器内部和容器之间的隔离,并提供强大的安全策略和机制来保护容器的运行环境。
容器和虚拟机的融合 - 安全容器
- 安全容器融合了容器和虚拟机的特性
- 容器之间使用hypervisor隔离,可以达到虚拟机的安全性
- 轻量级的hypervisor可以使安全容器的启动达到容器级别
和普通容器相比,安全容器最主要的区别是每个容器(准确地说是pod)都运行在一个单独的微型虚拟机中,拥有独立的操作系统内核,以及虚拟化层的安全隔离。
因为云容器实例采用的是共享多租集群,因此容器的安全隔离比用户独立拥有私有Kubernetes集群有更严格的要求。
通过安全容器,不同租户之间的容器之间,内核、计算资源、存储和网络都是隔离开的。保护了用户的资源和数据不被其他用户抢占和窃取
容器隔离和安全性的挑战
容器隔离是保证容器之间资源和环境隔离的关键
- 跨容器隔离:不同容器之间可能共享内核,从而增加了容器之间的攻击风险。
- Linux 内核漏洞:如果底层的 Linux 内核有漏洞,攻击者可能通过容器逃逸获取主机权限。
- 资源耗尽攻击:恶意容器可能通过滥用资源来拒绝服务或影响其他容器的性能。
- 应用程序漏洞:容器中的应用程序可能存在安全漏洞,可能导致数据泄露或系统受到攻击。
容器运行时监控和安全策略
为了提高容器环境的安全性,可以采取以下措施:
- 容器镜像的验证:使用签名和哈希等技术验证容器镜像的完整性和来源。
- 访问控制和权限管理:限制容器的访问权限,确保只有授权的用户和服务可以访问容器内部。
- 安全审计和日志记录:详细记录容器运行时的活动和事件,以便进行安全审计和排查问题。
- 漏洞管理和补丁管理:定期更新容器镜像和基础组件,修补已知漏洞,减少攻击面。
- 网络隔离和安全策略:使用网络隔离和防火墙等技术限制容器之间的通信,实施安全策略。
- 运行时监控和威胁检测:实时监控容器的运行状态和行为,检测和应对潜在的威胁。
相关文章:

深入解析容器与虚拟化:技术、对比与生态
深入解析容器与虚拟化:技术、对比与生态 文章目录 深入解析容器与虚拟化:技术、对比与生态容器和虚拟化的基本概念和原理容器的定义和特点虚拟化的定义和特点 容器使用场景容器和虚拟机的对比虚拟化技术的四个特点容器实现虚拟化的原理常见容器引擎和容器…...
制作游戏demo的心得
制作这个游戏demo出来的心得 https://www.bilibili.com/video/BV1cF411m7Dh/ 制作游戏demo的心得 制作游戏demo,主要是为了表现自己的技术,那就一门心思想着如何提高表现力就行了,在整体的画面渲染风格方面或许没有什么可选择的,…...

Web Tour Server窗口闪现
1.打开该文件所在位置 2.右击选择编辑,在最后一行加上pause,保存后重新打开Server窗口 3.重新打开后,若出现以下情况: 以管理员身份打开cmd命令行,输入命令netstat -aon|findstr “1080”,查看1080端口占用…...

Linux下的基本指令
目录 01. ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令(重要): 06.rmdir指令 && rm 指令(重要): 07.man指令(重要): 08mv指令ÿ…...
随机数生成器代码HTML5
代码如下 <!DOCTYPE html> <html> <head> <title>随机数生成器</title> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <style> body { text-align: center; bac…...

正确理解redux Toolkits中createSlice的action.payload
使用redux Toolkits中的createSlice编写extraReducers经常看到使用action.payload来更新state状态值: 那么action.payload指的到底是什么? 让我们看看action的定义部分: 注意: action.payload不是上面ajax请求的返回内容&#x…...

YOLOv8快速复现 官网版本 ultralytics
YOLOV8环境安装教程.:https://www.bilibili.com/video/BV1dG4y1c7dH/ YOLOV8保姆级教学视频:https://www.bilibili.com/video/BV1qd4y1L7aX/ b站视频:https://www.bilibili.com/video/BV12p4y1c7UY/ 1 平台搭建YOLOv8 平台:https://www.a…...

Haproxy搭建 Web 群集实现负载均衡
目录 1 Haproxy 1.1 HAProxy的主要特性 1.2 HAProxy负载均衡策略 1.3 LVS、Nginx、HAproxy的区别 2 Haproxy搭建 Web 群集 2.1 haproxy 服务器部署 2.1.1 关闭防火墙 2.1.2 内核配置(实验环境可有可无) 2.1.3 安装 Haproxy 2.1.4 Haproxy服务…...

Tessy 5.0.4
Tessy 5.0.4 Linux 2692407267qq.com,更多内容请见http://user.qzone.qq.com/2692407267/...
mybatis-plus根据指定条件批量更新
1.service实现类中 比如我这里只针对UserEntity,在UserServiceImpl下(该实现类是继承了mybatis-plus的ServiceImpl的)新增如下代码: public boolean updateBatchByQueryWrapper(Collection<UserEntity> entityList, Funct…...

虹科方案 | LIN/CAN总线汽车零部件测试方案
文章目录 摘要一、汽车零部件测试的重要性?二、虹科的测试仿真工具如何在汽车零部件测试展露头角?三、应用场景**应用场景1:方向盘开关的功能测试****应用场景2:各类型电机的控制测试****应用场景3:RGB氛围灯的功能测试…...
[solidity]合约调用合约
先写一个简单的合约将其部署,部署后的合约地址为:0xd9145CCE52D386f254917e481eB44e9943F39138 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract A{string myname;function setName(string memory _name) public{myname_name;}functi…...

Vulnhub系列靶机---JANGOW 1.0.1
文章目录 网卡配置信息收集主机发现端口扫描 漏洞利用反弹Shell提权 靶机文档:JANGOW 1.0.1 下载地址:Download (Mirror) 难易程度:. 网卡配置 水果味儿 信息收集 主机发现 端口扫描 访问80端口 点击site目录 点击页面上方的一个选项&…...

肖sir__项目环境之全流程__005
一、测试流程(h模型) 1、需求文档(产品) 需求文档(软件需求规格说明书srs) (1)如何分析需求 a、显示需求(主流程、功能,业务) b、隐性需求&#x…...
搜狗输入法下键翻页
搜狗输入法下键翻页 从官网下载 搜狗输入法智慧版关闭超级候选关闭候选...

C#多线程
一、多线程实现方式 1. 使⽤Thread类: System.Threading.Thread 类是C#中最基本的多线程编程⼯具。 2. 使⽤ThreadPool: 线程池是⼀个管理和重⽤线程的机制,它可以在应⽤程序中创建和使 ⽤多个线程,⽽⽆需显式地管理线程的…...
Unity 编辑器常用方法
unity编辑器开发 脚本注解1. RuntimeInitializeOnLoadMethod2. ColorUsage3. Header4. SerializeField5. HideInInspector6. Space7. Range8. Multiline9.[RequireComponent(typeof())]10.HelpURL 右键菜单注解1. CreateAssetMenu - 针对ScriptableObject 菜单栏注解1. MenuIt…...

21 mysql ref 查询
前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…...

启山智软/一款包含主流商城类型的一款电商中台系统100%开源
文章目录 介绍一、Smart Shop JAVA 微服务电商中台优势二、电商中台包含那些主流商城模式1.S2B2C供应链商城2.B2B2C多商户商城3.B2C单商户商城4.O2O外卖配送商城5.社区团购商城 6.演示地址总结 介绍 想要了解代码规范,学习商城解决方案,点击下方官网链接…...

【C语言】指针的进阶(四)—— 企业笔试题解析
笔试题1: int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】在x86环境下运行 【解析】 &a是取出整个数组的地址,&a就表示整个数组,因此…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...