06-Docker镜像

简介: Docker镜像是一种轻量级、可执行的独立软件包,包含运行应用所需的所有内容。它采用分层结构,基于联合文件系统(如AUFS、OverlayFS),实现资源共用与高效复用。底层为bootfs和rootfs,镜像层只读,容器层可写,便于隔离与管理。

06-Docker镜像

镜像镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好行程一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。Docker 镜像加载原理联合文件系统Docker 中的文件存储驱动叫做 storage driver。Docker 最早支持的stotage driver是 AUFS,它实际上由一层一层的文件系统组成,这种层级的文件系统叫UnionFS。联合文件系统(UnionFS):Union 文件系统,是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite serveral directories into a single virtual filesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行集成,基于基础镜像可以制作具体的应用镜像。特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。后来出现的docker版本中,除了AUFS,还支持OverlayFS、Btrfs、Device Mapper、VFS、ZFS等storage driver。bootfs和rootfsbootfs(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等。docker镜像底层层次:

对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接使用Host的Kernel,自己只需要提供rootfs就可以。所以,对于不同的Linux发行版,bootfs基本是一致的,rootfs会有差别,不同的发行版可以共用bootfs。有差别的rootfs:镜像分层Docker支持扩展现有镜像,创建新的镜像。新镜像是从base镜像一层一层叠加生成的。例如:镜像创建过程:镜像分层的优势镜像分层的一个最大好处就是共享资源,方便复制迁移,方便复用。容器层当容器启动时,一个新的可写层将被加载到镜像的顶部,这一层通常被称为容器层,容器层之下的都叫镜像层。所有对容器的改动,无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。如图:


相关文章
|
算法 数据挖掘 计算机视觉
第6章 数据分析——6.2 数据插值
第6章 数据分析——6.2 数据插值
|
Java 数据库连接 Go
如何在Spring Boot应用中使用Nacos实现动态更新数据源
如何在Spring Boot应用中使用Nacos实现动态更新数据源
1232 0
|
2月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
本文详细介绍Nacos作为配置中心的实现原理与实战步骤,涵盖配置管理、热更新、共享配置优先级及集群搭建,帮助微服务应用实现配置动态化、高可用部署。
126 4
|
2月前
|
Java Maven 数据安全/隐私保护
Nexus仓库
Nexus仓库是Sonatype推出的开源制品管理工具,支持Maven、Npm、Docker等格式。本文介绍其在Linux和Docker环境下的安装配置,包括JDK部署、OSS版下载、用户权限、匿名访问设置,以及仓库创建与上传下载操作,涵盖密码重置、数据持久化及脚本批量导入等内容,助力搭建高效私有仓库。
|
2月前
|
Java Shell Maven
06-nexus私仓环境搭建
本文介绍Nexus私有仓库环境搭建全过程,包括JDK安装、Nexus OSS版下载与解压、配置文件修改、创建nexus用户并启动服务。详细说明了如何通过Web界面登录、修改默认密码、配置匿名访问,并创建Maven私仓。同时提供上传本地jar包的两种方式,重点演示使用脚本批量导入本地仓库依赖的方法,包含清理无效文件、重命名元数据及执行上传命令等步骤,适用于企业内网构建Maven私服场景。
|
10月前
|
存储 人工智能 测试技术
DeepWiki:告别迷茫!AI轻松解析Github代码库
DeepWiki 的核心目标是帮助开发者快速理解复杂的代码仓库。无论是公共仓库还是私有项目,它都可以通过简单的操作生成类似 Wikipedia 的文档页面。
|
12月前
|
存储 缓存 安全
阿里云服务器计算型c7/c8y/c8i,通用型g7/g8y/g8i,内存型r7/r8y/r8i区别及选择参考
为了满足不同企业级用户的多样化需求,阿里云在当下的活动中推出了多款计算型、通用型和内存型的云服务器实例,包括计算型c7/c8y/c8i、通用型g7/g8y/g8i以及内存型r7/r8y/r8i等。这些实例各具特色,适用于不同的应用场景和业务需求。本文将为您详细解析这些实例的区别,以及选择参考,帮助您根据自己的需求选择合适的阿里云服务器实例。
|
存储 SQL 运维
Hologres OLAP场景核心能力介绍-2024实时数仓Hologres线上公开课02
本次分享由Hologres产品经理赵红梅(梅酱)介绍Hologres在OLAP场景中的核心能力。内容涵盖OLAP场景的痛点、Hologres的核心优势及其解决方法,包括实时数仓分析、湖仓一体加速、丰富的索引和查询性能优化等。此外,还介绍了Hologres在兼容PG生态、支持多种BI工具以及高级企业级功能如计算组隔离和serverless computing等方面的优势。最后通过小红书和乐元素两个典型客户案例,展示了Hologres在实际应用中的显著效益,如运维成本降低、查询性能提升及成本节省等。
421 7
|
芯片
浮动CPU和定点CPU的主要区别是什么
浮动CPU和定点CPU的主要区别在于处理数据的方式不同。浮动CPU支持浮点运算,能高效处理小数和高精度计算;而定点CPU仅支持整数运算,适用于对精度要求不高的场景。
|
传感器 数据采集 存储
LabVIEW飞机发动机测试与故障诊断系统
LabVIEW飞机发动机测试与故障诊断系统
615 2