Docker(四)-Docker镜像

1.概念

镜像是一种轻量级的、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖
打包好形成一个可交付的运行环境(包括代码,运行时需要的库,环境变量和配置文件等),这个打包好的运行环境
就是image镜像文件。通过镜像文件才能生成Docker容器实例(类似java中new出来一个对象)。

2.镜像为什么是分层的

1.UnionFS是所有容器和镜像层背后的底层文件系统,UnionFS它是一种实现的概念,并不是具体的文件系统类型。
2.UnionFS是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFS是Docker镜像的基础。镜像可以通过分层来进行继承,基于镜像基础,可以制作各种具体的应用镜像。docker pull 【镜像名:TAG】时,会一次加载多个文件系统,最终形成一个容器实例。

在这里插入图片描述

docker inspect tomcat

在这里插入图片描述

3.镜像加载原理

3.1bootfs(boot file system,用于系统引导的文件系统)
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS
bootfs主要包含bootloader(根加载)和kernel(linux内核)。bootloader主要是引导加载kernel,linux刚启动时会加载bootfs文件
系统。
Docker镜像最底层就是引导文件系统bootfs(每一个容器都是一个简易版的linux环境)。
这一层与我们典型的linux系统是一样的,包含bootloader和kernel。当bootloader加载完成之后,整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
3.2rootfs(root file system,根文件系统)
rootfs在bootfs之上。包含的就是典型linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作
系统发行版,比如centos等

4.为什么docker镜像采用分层结构

镜像分层最大的好处就是资源共享,比如有多个镜像都是从相同的Base镜像构建而来,那么宿主机只需要在磁盘上保留
一份Base镜像,同时内存中也只需要加载一份Base镜像,这样就可以为所有的容器服务了,而且镜像的每一层都可以
被共享。Docker镜像层都是只读的,当对一个Base镜像修改或者新增内容时,就会在当前镜像层之上创建新的镜像层。
容器层是可写的。用镜像创建容器启动时,一个新的可写层被加载到镜像的顶部。
这一层通常被称作 容器层 , 容器层之下的都叫 镜像层。例:Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。类似java继承于一个Base基础类,自己再按需扩展新镜像是从base镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层

在这里插入图片描述

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

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

相关文章

【Java】三种实现网络通讯的方式以及相关协议的使用示例

Java网络 - 应用篇 👾以下代码均经过本人实测,请放心食用。顺便求个关注,谢谢!! 文章目录 Java网络 - 应用篇Socket 篇简介代码实现SockerServerSocketClient RestTemplate 篇简介...ForEntity 与 ...ForObject 对比示…

IPFoxy代理IP:IPv4与IPv6性能与安全性对比

在使用IPFoxy静态代理IP的过程中,经常有小白朋友疑惑,IPv4与IPv6有何区别?他们在性能与安全上的差别如何,又该如何选择?在这篇博文中,我们将从各个方面为您科普这一区别,帮助您更好的选择。 一、…

柒拾肆- 如何通过数据影响决策(五)- 时序数据

什么是好? 对于 单一时序指标 来说(如最简单的 销售、日活顾客数、订单数 等 ),在决策时该怎样 看 呢? 或者换句话说,数据 应该怎样 表达 才能让决策者做出 更全面 的决策呢? 一、目前的方式 …

Mkdocs中文系列教程补充(1)

什么是requirements.txt 我的理解是mkdocs依赖的py库 第一次建立MKdocs文档使用 mkdocs new . 完后,比较建议执行一下: pip install -r requirements.txt 不然mkdocs serve后会出现什么 xxx not found ,比如下面这位老哥 示例 mkdocs …

【C++】循环、控制流语句、

8、循环(loops)(1)for loops for循环非常灵活,可以做很多事情。上图红框框出来的代码块就是一个for循环。 for是关键字 for后面内容分为三部分,每部分用分号;隔开 第一部分A是变量的声明&…

Qt入门小项目 | 实现一个图片查看器

文章目录 一、实现一个图片查看软件 一、实现一个图片查看软件 需要实现的功能: 打开目录选择图片显示图片的名字显示图片 在以上功能的基础上进行优化,需要解决如下问题: 如何记住上次打开的路径? 将路径保存到配置文件中&#x…

使用MAT定位线上OOM问题

目录 1.什么是OOM? 2.发生的可能原因 3.常见类型的OOM 4.如何定位问题? 4.1 获取dump文件 4.2 MAT分析 「Leak Suspects」泄露嫌疑 「Histogram」直方图 「dominator tree」支配树 「thread overview」线程视图 目录 1.什么是OOM? 2.发生的可能原因 …

深度学习入门5——为什么神经网络可以学习?

在理解神经网络的可学习性之前,需要先从数学中的导数、数值微分、偏导数、梯度等概念入手,从而理解为什么神经网络具备学习能力。 1.数值微分的定义 先从导数出发理解什么是梯度。某一点的导数直观理解就是在该点的切线的斜率。在数学中导数表示某个瞬…

05-对混合app应用中的元素进行定位

本文介绍对于混合app应用中的元素如何进行定位。 一、app的类型 1)Native App(原生应用) 原生应用是指利用Android、IOS平台官方的开发语言、开发类库、工具等进行开发的app应用,在应用性能和交互体验上应该是最好的。 通俗点来…

Win10录屏,3种方法,快速搞定

在数字化时代,录屏功能已经成为了我们日常生活和工作中不可或缺的一部分。无论是为了制作教学视频,还是为了记录游戏的高光时刻,还是为了保存开会内容,录屏功能都能为我们提供极大的便利。Win10操作系统作为微软推出的经典之作&am…

在k8s中部署Elasticsearch高可用集群详细教程

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Elasticsearch简介 2、为什么在k8s中部署elasti…

Redis 6.0新特性详解

Redis 6.0新特性主要有3个:多线程、Client Side Cache、Acls。下面详细说明一下。 1.多线程 redis 6.0 提供了多线程的支持,redis 6 以前的版本,严格来说也是多线程,只不过执行用户命令的请求时单线程模型,还有一些线…

鸿蒙HarmonyOS实战:状态管理和传值

状态管理 State State是一个装饰器,是用来存放数据的,比较好理解 由State的数据来进行状态驱动视图更新 代码很简单 State count: number 0; 需要注意的是State初始化的数据必须赋值 这里我们讨论简单用法,至于复杂的用法可以到项目中介绍…

RAG 流程及论文串烧

文档切片 文档切片的五个层次 https://medium.com/anuragmishra_27746/five-levels-of-chunking-strategies-in-rag-notes-from-gregs-video-7b735895694d#b123 Basic RAG 与 Advanced RAG https://pub.towardsai.net/advanced-rag-techniques-an-illustrated-overview-04d…

Python学习笔记14:进阶篇(三)。类的终结篇,类的导入和模块的导入。

前言 这篇文章属于类知识的最后一篇,带一点点其他知识,学习内容来自于Python crash course。 关注我私信发送Python crash course,分享一份中文版PDF。 类的导入 在学习的时候,包括之前,我都是在一个文件中把所有代…

免费域名第二弹:手把手教你获取个性化免费域名并托管至Cloudflare

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 免费申请域名的方法 📒📝 注册账号📝 创建免费域名📝 将域名添加到 Cloudflare⚓️ 相关链接 ⚓️📖 介绍 📖 在如今的数字时代,拥有一个个性化的域名已经成为越来越多人的需求。无论是建立个人博客、项目展示,还…

鸿蒙开发通信与连接:【@ohos.connectedTag (有源标签)】

有源标签 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import connectedTag from ohos.connectedTag;connectedTag.init init(): boolean 初始化有源标签芯片。 需要权限&#…

MySQL经典面试题:谈一谈你对事务的理解

文章目录 📑事务事务的基本概念回滚开启事务的sql语句 事务的基本特性总结一下涉及到的三个问题 ☁️结语 📑事务 事务的基本概念 事务是用来解决一类特定场景的问题的,在有些场景中,完成某个操作,需要多个sql配合完…

CPN IDE实现分层效果

Shift键鼠标选中要分层的库所和变迁!然后create subpage。 Subpage是这样的,不会像CPN tools里面自动生成IN和OUT库所,但是也能正确运行。 虽然父页面在运行中有标红:"port not defined" 错误通常意味着在模型中有一些连…