docker镜像到底是什么

发布时间 - 2021-12-08 00:00:00    点击率:
docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等);镜像不包含任何动态数据,其内容在构建之后也不会被改变。

本文操作环境:ubuntu 18.04系统、Docker 20.10.11版、Dell G3电脑。

docker镜像到底是什么?

先了解下什么是镜像:

我们都知道,操作系统分为 内核 和 用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。

Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。

分层存储

因为镜像包含操作系统完整的 root 文件系统,其体积往往是庞大的,因此在 Docker 设计时,就充分利用  的技术,将其设计为分层存储的架构。所以严格来说,镜像并非是像一个 ISO 那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

关于镜像构建,将会在后续相关文章中做进一步的讲解。

推荐学习:《Docker视频教程》


# docker  # 镜像  # 文件系统  # 是一个  # 所需  # 包含了  # 不包含  # 操作系统  # 这一  # 将会  # 就不 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解Oracle修改字段类型方法总结  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  非常酷的网站设计制作软件,酷培ai教育官方网站?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  简单实现jsp分页  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  如何在腾讯云服务器上快速搭建个人网站?  JS中对数组元素进行增删改移的方法总结  轻松掌握MySQL函数中的last_insert_id()  七夕网站制作视频,七夕大促活动怎么报名?  如何在局域网内绑定自建网站域名?  详解Android——蓝牙技术 带你实现终端间数据传输  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  C++用Dijkstra(迪杰斯特拉)算法求最短路径  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  魔方云NAT建站如何实现端口转发?  JS经典正则表达式笔试题汇总  Laravel如何配置任务调度?(Cron Job示例)  如何用PHP快速搭建高效网站?分步指南  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  高防服务器租用如何选择配置与防御等级?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  移动端脚本框架Hammer.js  香港服务器租用每月最低只需15元?  如何在阿里云虚拟主机上快速搭建个人网站?  黑客入侵网站服务器的常见手法有哪些?  如何用VPS主机快速搭建个人网站?  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Python函数文档自动校验_规范解析【教程】  网站制作壁纸教程视频,电脑壁纸网站?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  js实现点击每个li节点,都弹出其文本值及修改  Android 常见的图片加载框架详细介绍  免费视频制作网站,更新又快又好的免费电影网站?  实例解析angularjs的filter过滤器  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何快速完成中国万网建站详细流程?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法