容器技术1-容器与镜像简介

目录

1、容器与虚拟化

2、容器发展历程

3、镜像简介

4、镜像原理

(1)分层存储

(2)写时复制

(3)内容寻址

(4)联合挂载


1、容器与虚拟化

容器技术在操作系统层面实现了对计算机系统资源的虚拟化,在操作系统中,通过对 CPU、内存和文件系统等资源的隔离、划分和控制,实现进程之间透明的资源使用。

虚拟机和容器在实现架构上的区别:

每个虚拟机都 有自己的操作系统、系统库以及应用,而容器并没有 Hypervisor 层(虚拟化通常在 Hypervisor 层实现对硬件资源的虚拟化),每个容器是和主机共享硬件资源及操作系统。 

2、容器发展历程

容器的概念最早可以追溯到 1979 年的 Unix 工具 Chroot;

2008 年出现的 LXC(Linux Containers)可以说是第一个完整的 Linux 容器管理实现方案;

2013 年DotCloud 开源了其内部的容器项目 Docker;

2014 年CoreOS 发布了容器引擎 Rocket;

2015 年微软在 Windows Server 上为基于 Windows 的应用添加了容器支持;

2017 年阿里巴巴开源了其基于 Apache 2.0 许可协议的轻量级容器技术 Pouch。

容器技术发展历程 :

3、镜像简介

镜像是容器运行的基础,容器引擎服务可使用不同的镜像启动相应的容器。在容器出 现错误后,能迅速通过删除容器、启动新的容器来恢复服务,这都需要以容器镜像作为支撑技术。

镜像是由按层封装好的文件系统和描述镜像的元数据构成的文件系统包,包含应用所 需要的系统、环境、配置和应用本身等。镜像由开发者构建好之后上传至镜像仓库,使用 者获取镜像之后就可以使用镜像直接构建自己的应用。

与虚拟机所用的系统镜像不同,容器镜像不仅没有 Linux 系统内核,同时在格式上也 有很大的区别。虚拟机镜像是将一个完整系统封装成一个镜像文件,而容器镜像不是一个文件,而是分层存储的文件系统。

4、镜像原理

(1)分层存储

每个镜像都是由一系列的“镜像层”组成,当需要修改镜像内的某个文件时,只会对最上方的读写层进 行改动,不会覆盖下层已有文件系统的内容。当提交这个修改生成新的镜像时,保存的内容仅为最上层可读写文件系统中被更新过的文件,这样就实现了在不同的容器镜像间共享镜像层。

容器镜像结构图如下:

最上层是容器的读写层,剩余的是只读层。

(2)写时复制

写时复制策略即在多个容器之间共享镜像,每个容器在启动时并不需要单独复制一份镜像文件,而是将所有镜像层以只读的方式挂载到一个挂载点,再在上面覆盖一个可读写的容器层。在未更改文件内容时,所有容器共享同一份数据,只有在容器运行过程中文件系统发生变化时,才会把变化的文件内容写到可读写层,并隐藏只读层中的老版本文件。写时复制配合分层机制减少了镜像对磁盘空间的占 用和容器启动时间。

(3)内容寻址

根据文件的内容来索引镜像和镜像层,对镜像层的内容计算校验和,生成一个内容哈希值,并以此哈希值作为镜像层的唯一标识,该机制提高了镜像的安全性,并在 pull、push、load 、save 操作后检测数据的完整性。

(4)联合挂载

可以在一个挂载点上同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,使得最终可见的文件系统包含整合之后各层的文件和目录,将多个镜像层的文件系统挂载到一个挂载点来实现一个统一文件系统视图的途径,是下层存储驱动实现分层合并的方式。

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

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

相关文章

山西电力市场日前价格预测【2024-01-21】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-21)山西电力市场全天平均日前电价为266.42元/MWh。其中,最高日前电价为359.17元/MWh,预计出现在08:15。最低日前电价为0.00元/MWh,预计出…

76.网游逆向分析与插件开发-背包的获取-背包地址的逆向分析

内容参考于:易道云信息技术研究院VIP课 上一个内容:75.网游逆向分析与插件开发-背包的获取-背包结构与指针的逆向分析-CSDN博客 通过上一个内容,知道了背包的结构,它是一个指针数组,它里面还记录的背包有多少格。 然…

web练习题题解

1.Maven是用于构建的工具,使用前需要配置(C )文件,在里边添加阿里云的镜像便于自动下载相关的依赖jar包。 A.web.xml B.pom.xml C.Settings.xml 2.(B )是一个用 Java 编写的程序,是一种实现了…

Go语言基础快速上手

1、Go语言关键字 2、Go数据类型 3、特殊的操作 3.1、iota关键字 Go中没有明确意思上的enum(枚举)定义,不过可以借用iota标识符实现一组自增常亮值来实现枚举类型。 const (a iota // 0b // 1c 100 // 100d // 100 (与上一…

linux LPT和COM回路测试(基于python+Qt+C++)

软件UI: 回路治具&#xff08;COMLPT&#xff09;&#xff1a; lpt_test.cpp&#xff08;c 源代码&#xff09;&#xff1a; #include <iostream> #include <fstream> #include <sstream> #include <unistd.h> #include <fcntl.h> #include <…

基于 UniAPP 社区论坛项目多端开发实战

社区论坛项目多端开发实战 基于 UniAPP 社区论坛项目多端开发实战一、项目准备1.1 ThinkSNS 简介及相关文档1.2 使用 UniAPP 构建项目1.3 构建项目文件结构1.4 配置页面 TabBar 导航1.5 使用 npm 引入 uView UI 插件库 二、首页功能实现2.1 首页 header 广告位轮播图功能实现2.…

Python并发与多线程:祥细的说一下GIL线程锁

在Python中&#xff0c;有一个全局解释器锁&#xff08;Global Interpreter Lock&#xff0c;GIL&#xff09;&#xff0c;它是为了保证在多线程环境下&#xff0c;每个线程都能正确地执行而引入的。 GIL是一个互斥锁&#xff0c;它要求在同一时刻只能有一个线程执行Python字节…

小白水平理解面试经典题目LeetCode 121 Best Time to Buy and Sell Stock

121 Best Time to Buy and Sell Stock (买卖股票的最佳时机) 你好&#xff0c;2024年的第一个月&#xff0c;又是秋风萧瑟天气凉&#xff0c;草木摇落露为霜。.。。在这个特殊的时代&#xff0c;作为我们普通的一个打工人&#xff0c;我们用这道题&#xff0c;开启对这个不符合…

2023全球边缘计算大会深圳站:核心内容与学习收获(附大会核心PPT下载)

边缘计算作为当今IT领域的热门话题&#xff0c;已经引起了全球范围内的广泛关注。本次大会汇聚了众多业界精英&#xff0c;共同探讨边缘计算的发展趋势、技术应用与创新实践。本文将围绕大会的核心内容展开讨论&#xff0c;并分析参会者从中能够学到的东西。 一、边缘计算的发…

C++PythonC# 三语言OpenCV从零开发(2):教程选择

文章目录 相关专栏前言视频教学和官方文档视频教程OpenCV 官方教程最终选择我的最终选择 相关专栏 C&Python&Csharp in OpenCV 前言 OpenCV 有官方的教程和简单的视频教程&#xff1a; OpenCV 官方教程 B站也有相关的视频教学 OpenCV4 C 快速入门视频30讲 - 系列合集 …

【Java】JDBC的使用

JDBC package jdbc_demo;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class jdbc {public static void main(String[] args)throws Exception {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.获取…

vue报错 ‘超出最大堆栈大小‘

当Vue应用程序报错"超出最大堆栈大小"时&#xff0c;通常是由于递归调用导致的无限循环或过深的函数调用堆栈。 要解决这个问题&#xff0c;你可以尝试以下几种方法&#xff1a; 检查是否存在无限递归&#xff1a;检查你的代码中是否存在无限递归调用。递归调用是指…

本周Github上有趣的11个项目

本周Github上有趣的项目&#xff1a; 1、AI 网关 速度极快的 AI 网关。通过 1 个快速且友好的 API 升读 100 多个大模型。 Portkey 的 AI 网关是您的应用程序和托管 LLM 之间的接口。它通过统一的 API 简化了对 OpenAI、Anthropic、Mistral、LLama2、Anyscale、Google Gemini…

计算机中如何存储数字、怎么运算、以及越界了怎么办

前言 日常开发工作中&#xff0c;很难用到二进制运算&#xff0c;编程语言已经帮我们做好处理了&#xff0c;除非研究的就是底层技术&#xff0c;比如硬件开发&#xff0c;这是避不过去的&#xff0c;但是你如果还想深入研究一番&#xff0c;本篇论文就值的你看。 问题 在开…

【开源】基于JAVA语言的教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

【开发掉坑】go 中 interface 的 nil 判断

今天介绍下 go 中的 interface(any) 的 nil 判断&#xff0c;项目中遇到的一个小问题&#xff0c;知识遗忘了&#xff0c;再做个记录。 前言 最近在合作开发项目的过程中&#xff0c;发现小伙伴写了一段代码&#xff0c;示意代码如下&#xff1a; package mainimport("…

逸学Docker【java工程师基础】3.4Docker安装redis

1.拉取redis docker pull redis 2.选择一个合适的redis 版本的配置文件 Redis configuration | Redis 或者这个 链接&#xff1a;https://pan.baidu.com/s/1RRdtgec4xBAgQghlhm0x1Q 提取码&#xff1a;ycyc 在1044行修改密码 3.提前在服务器建立 /data/redis 文件夹&…

【华为 ICT HCIA eNSP 习题汇总】——题目集1

1、&#xff08;多选&#xff09;根据下面所示的命令输出&#xff0c;下列描述中正确的是&#xff1f; A、GigabitEthernet0/0/1 允许VLAN1通过 B、GigabitEthernet0/0/1 不允许VLAN1通过 C、如果要把 GigabitEthernet0/0/1 变为 Access 端口&#xff0c;首先 需要使用命令“un…

2023 年,我患上了 AI 焦虑症!

【作者有话说】2023 年对我来说是神奇的一年&#xff0c;我意外地从一个程序员变成了一个 AI 资讯届的“网红”&#xff0c;到年底时我在 X 平台的阅读量超过 1 亿&#xff0c;微博上的阅读量则超过 10 亿&#xff0c;很多人通过我的微博或者 X 了解最新的 AI 资讯、教程和 Pro…

SpringMVC下半篇之整合ssm

4.ssm整合 4.1.创建表 CREATE TABLE account (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,money double DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;4.2.创建工程 4.3.pom.xml <?xml version"1.0" encoding&…