Docker镜像的内部机制

news2024/11/18 7:42:56

Docker镜像的内部机制

镜像就是一个打包文件,里面包含了应用程序还有它运行所依赖的环境,例如文件系统、环境变量、配置参数等等。

环境变量、配置参数这些东西还是比较简单的,随便用一个 manifest 清单就可以管理,真正麻烦的是文件系统。为了保证容器运行环境的一致性,镜像必须把应用程序所在操作系统的根目录,也就是 rootfs,都包含进来。

虽然这些文件里不包含系统内核(因为容器共享了宿主机的内核),但如果每个镜像都重复做这样的打包操作,仍然会导致大量的冗余。可以想象,如果有一千个镜像,都基于 Ubuntu 系统打包,那么这些镜像里就会重复一千次 Ubuntu 根目录,对磁盘存储、网络传输都是很大的浪费。

很自然的,我们就会想到,应该把重复的部分抽取出来,只存放一份 Ubuntu 根目录文件,然后让这一千个镜像以某种方式共享这部分数据。

这个思路,也正是容器镜像的一个重大创新点:分层,术语叫“Layer”。

容器镜像内部并不是一个平坦的结构,而是由许多的镜像层组成的,每层都是只读不可修改的一组文件,相同的层可以在镜像之间共享,然后多个层像搭积木一样堆叠起来,再使用一种叫“Union FS 联合文件系统”的技术把它们合并在一起,就形成了容器最终看到的文件系统。

命令 docker inspect 来查看镜像的分层信息,比如 nginx:alpine 镜像:

docker inspect nginx:alpine

它的分层信息在“RootFS”部分:

通过这张截图就可以看到,nginx:alpine 镜像里一共有 6 个 Layer

现在你也就明白,之前在使用 docker pulldocker rmi 等命令操作镜像的时候,那些“奇怪”的输出信息是什么了,其实就是镜像里的各个 Layer。Docker 会检查是否有重复的层,如果本地已经存在就不会重复下载,如果层被其他镜像共享就不会删除,这样就可以节约磁盘和网络成本。

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

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

相关文章

【VC 7/8】vCenter Server 基于文件的备份和还原Ⅱ——使用 FTP 协议备份 VC(VAMI 英文)

目录2. 备份 vCenter Server2.1 使用 FTP 协议备份 VC(1)登录 vCenter Server 管理界面(2)进入Backup页面(3)配置 Backup Schedule(4)开始备份(5)备份成功&am…

信息安全与数学基础-笔记-④二次同余方程

知识目录二次同余方程的解欧拉判别式Legendre (勒让德符号)二次同余方程的解 什么是二次同余方程的解 注意这里二次同余方程和一次同余方程是不一样的 在x2x^2x2 三 a (mod m) 方程中举例 ↓ 解即剩余类,因为是模m,所以我们在 [ 0, m-1 ]中逐个代入看是…

HTML DOM

通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。HTML DOM (文档对象模型)当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处…

Compaction的原理与Hbase Compaction实现

HBase中的用户数据在LSM树体系架构中最终会形成一个一个小的HFile文件。我们知道,HFile小文件如果数量太多会导致读取低效。为了提高读取效率,LSM树体系架构设计了一个非常重要的模块——Compaction。Compaction核心功能是将小文件合并成大文件&#xff…

现代C++教程 笔记

写在前面 记录一下《现代C教程》中的要点。 现代C是指C11之后的语法特性,如无特别说明,下面的语法特性均是C11后才可使用。 一、语言可用性的强化 1. 常量 1.1 nullptr 作用: 代替NULL赋空指针; 使用: char *a …

进制的转换:

任意进制转换成十进制:十进制数位置上数*当前进制的位权二进制与八进制、十六进制之间的转换:3个二进制一个8进制4个二进制一个16进制各种进制的书写方式:十进制转换任意进制,分为整数部分和小数部分:整数部分(除基取余法&#xf…

SpringCloud的五大组件功能

SpringCloud的五大组件 EurekaRibbonHystrixZuulConfig 一、Eureka 作用是实现服务治理,即服务注册与发现。 Eureka服务器相当于一个中介,负责管理、记录服务提供者的信息。服务调用者不需要自己寻找服务 ,而是把需求告诉Eureka &#x…

IronWebScraper 2023.2.2 Crack

关于 .NET 的 IronWebScraper 用于从 HTML Web 应用程序中提取干净的结构化数据的 C# 框架。 IronWebScraper for .NET 是一个 C# 网络抓取库,它允许开发人员模拟和自动化人类浏览行为,以从 Web 应用程序中提取内容、文件和图像作为本机 .NET 对象。Iron…

基于Flink SQL CDC Mysql to Mysql数据同步

基于Flink SQL CDC Mysql to Mysql数据同步 Flink CDC有两种方式同步数据库: 一种是通过FlinkSQL直接输入两表数据库映射进行数据同步,缺点是只能单表进行同步;一种是通过DataStream开发一个maven项目,打成jar包上传到服务器运行…

考研第一天,汤家凤基础班,连续与极限复习笔记

函数连续极限性质保号性证明极值点:夹逼准则二项式展开根号下,大于一,小于一的讨论直接放缩求和分子分母齐次,且分母大一次,用积分单调有界存在极限几个重要的切线放缩证明有界,然后放缩求单调证明有界&…

智慧高校数字化校园数据中心建设方案

本资料来源网络,知识分享,仅供个人学习,请勿商用。完整资料阅览见文末,部分资料内容: 一、 云数据中心建设规划云计算平台逻辑架构图 云设施即服务(IaaS,Cloud Infrastructure as a Service):系…

信息系统项目管理师——信息化和信息系统

信息的特征(掌握) 1、客观性 2、普遍性 3、无限性 4、动态性:信息是随着时间的变化而变化的。 5、相对性 6、依附性: 1)信息是客观世界的反映,任何信息必然由客观事物所产生,不存在无源的信息。…

视觉SLAM十四讲ch5 相机与图像笔记

视觉SLAM十四讲ch5 相机与图像本讲目标上讲回顾相机模型小孔成像模型(单目模型)畸变双目模型RGB-D相机本讲目标 ●理解理解针孔相机的模型、内参与径向畸变参数。 ●理解一个空间点是如何投影到相机成像平面的。 ●掌握OpenCV的图像存储与表达方式。 ●…

synchronized原理(轻量级,锁膨胀,自旋,偏向锁)

轻量级锁 轻量级锁的使用场景:如果一个对象虽然有多线程要加锁,但加锁的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。 轻量级锁对使用者是透明的,即语法仍然是 synchronized。 轻量级锁加…

c++11 标准模板(STL)(std::unordered_map)(三)

定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…

学习 Python 之 Pygame 开发魂斗罗(九)

学习 Python 之 Pygame 开发魂斗罗&#xff08;九&#xff09;继续编写魂斗罗1. 在子弹类中修改敌人发射子弹的位置2. 创建显示敌人子弹的函数3. 解决敌人不会向下掉落的问题4. 给敌人碰撞体组增加碰撞体5. 解决敌人叠加在一起的问题继续编写魂斗罗 在上次的博客学习 Python 之…

linux入门---如何实现用户切换

目录标题基本用户认识用户的切换susu -exitsu 用户名sudo基本用户认识 在linux系统中将用户分为两个大类一个是root用户一个是普通用户&#xff0c;root用户是linux操作系统的超级管理员&#xff0c;相当于古代的皇帝不会受到任何的权限约束&#xff0c;而普通用户就会受到权限…

循环缓冲区概述

传送门 >> AutoSAR入门和实战系列总目录 文章目录概述使用循环缓冲区机制循环缓冲区、循环队列、循环缓冲区或环形缓冲区是一种数据结构&#xff0c;它使用单个固定大小的缓冲区&#xff0c;就好像它是端到端连接的一样。这种结构很容易用于缓冲数据流。 概述 循环缓冲…

Linux性能学习(2.2):内存_进程线程内存分配机制探究

文章目录1 进程内存分配探究1.1 代码1.2 试验过程2 线程内存分配探究2.1 代码2.2 试验过程3 总结参考资料&#xff1a;1. 嵌入式软件开发杂谈&#xff08;3&#xff09;&#xff1a;Linux下内存与虚拟内存2. 嵌入式软件开发杂谈&#xff08;1&#xff09;&#xff1a;Linux下最…

Cookie+Session详解

文章目录批量删除会话技术简介CookieCookie 查看Cookie 的删除Cookie 使用页面获取 cookie 信息cookie 特点Sessionsession 的使用Session 登录权限验证过滤器简介过滤器的使用WebFilter 注解过滤放行登录权限验证批量删除 servlet 类 dao 层 会话技术 简介 在计算机领域…