镜像的分层概念

这篇具有很好参考价值的文章主要介绍了镜像的分层概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、是什么

1.首先复习一下镜像是什么?

镜像

是一个轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),之后个打包好的运行环境就是image镜像文件。

只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来的一个对象)。

2.分层的镜像

以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载

镜像的分层概念

3.UnionFS(联合文件系统)

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

镜像的分层概念

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

4.Docker镜像加载原理:

docker的镜像实际上一层一层的文件系统组成,这种层级的文件系统UnionFS。

bootfs(boot file system)主要包含BootLoader和kernel,BootLoader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会写在bootfs。

rootfs(root file system),在bootfs之上。包含的就是典型Linux系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

镜像的分层概念

平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M??

镜像的分层概念

对于一个精简的OS,rootfs可以很小,只需要包括最进本的命令、工具和程序就可以了,因为底层直接用Host的kernel,自己只需要提供rootfs就行了。由此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

镜像的分层概念

为什么Docker镜像要采用这种分层结构呢?

镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。

比如说有多个镜像都从相同的base镜像构建而来,那么Docker Host只需在磁盘上保存一份base镜像;

同时内存中也只需加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

二、重点理解

Docker镜像层都是只读的,容器层是可写的

当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

所有对容器的改动 - 无论添加、删除、还是修改文件都只发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

镜像的分层概念文章来源地址https://www.toymoban.com/news/detail-494692.html

到了这里,关于镜像的分层概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 『 云原生·Docker』Docker镜像分层与Docker镜像操作(二)

    本系列主要分为以下六大部分,正在更新中,尽请期待! 『 云原生·生之门』 『 云原生·前置知识』 『 云原生·Docker』 『 云原生·Kubernetes』 『 云原生·KubeSphere』 『 云原生·DevOps』 🚩点击关注本专栏 提示:已经更新的或正在更新的文章前面打勾了哈! 镜像是Docker三大核心

    2024年02月06日
    浏览(37)
  • 复习一下JVM内存结构

    程序计数器内存很小,可以看作是 当前线程 所执行字节码的 行号指示器 。 有了它,程序就能被正确的执行。 因为有 线程切换 的存在,则每个线程必须有各自独立的程序计数器,即 线程私有 的内存。 这里再解释一下什么是 线程切换 ,线程切换指的是: 单处理器在执行

    2024年02月20日
    浏览(102)
  • 浅浅的复习一下sql

    语法: 1、现在有一个表如下: 2、执行sql语句-1 结果: 说明:由于小刘的ename 和 email重复了,所以结果只显示一次! 3、执行sql语句-1 结果: 说明:尽管小刘的ename 和 email重复了, 但是 phone没有重复,所以结果只显示两次! distinct必须放在开头; distinct语句中select显示的字

    2024年02月11日
    浏览(25)
  • 4.5--计算机网络之基础篇--1.模型分层--(复习+深入)---好好沉淀,加油呀

    1.TCP/IP模型的分层 1.1.为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式; 而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用

    2024年02月02日
    浏览(26)
  • 使用Dockerfile创建nginx+php镜像,采用分层

    什么是Dockerfile Dockerfile是一种能被Docker程序解释的脚本,它是由一条条的命令所组成,每条命令对应Linux下面的一条命令,Docker程序将这些Dockerfile命令翻译成真正的Linux命令 Dockerfile命令 Docker镜像分层 利用Dockerfile文件来制作镜像时,我们可以采取一步到位的方式,将官方镜像

    2024年02月03日
    浏览(38)
  • 快进来,一起复习一下抽象类和接口

    背景 工作也有四年了,基础的东西许久不看有些遗忘。一起来复习一下吧 语法区别 构造方法 :抽象类可以有构造方法,接口中不能有构造方法 成员变量 :抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是

    2024年02月07日
    浏览(27)
  • Docker 镜像解密:分层存储与构建原理多角度解析

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(32)
  • 分层测试(一):什么是分层测试?

    分层测试是通过对质量问题分类、分层来保证整体系统质量的测试体系。 模块内通过接口测试保证模块质量,多模块之间通过集成测试保证通信路径和模块间交互质量,整体系统通过端到端用例对核心业务场景进行验证,用户体验通过手工测试确保无妨碍用户的交互。 分层

    2024年02月05日
    浏览(34)
  • 2023年了,复习了一下spring boot配置使用mongodb

    MongoDB是一个基于分布式文件存储的开源数据库系统,使用C++语言编写。它是一个介于关系数据库和非关系数据库之间的产品,具有类似关系数据库的功能,但又有一些非关系数据库的特点。MongoDB的数据模型比较松散,采用类似json的bson格式,可以灵活地存储各种类型的数据

    2024年02月08日
    浏览(46)
  • 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

    目录 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 一、数据流图 ( DFD ) 简介 二、数据流图 ( DFD ) 概念符号 1、数据流  2、加工 ( 核心 ) 3、数据存储 4、外部实体 三、数据流图 ( DFD ) 分层  1、分层说明  2、顶层数据流图 3、中层数据流图 4、底层数据流图 四、数

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包