docker镜像原理

简介

docker镜像是一个只读的Docker容器模板,含有Dokcer容器启动所需的内容。Docker镜像是Dokcer容器的的静态视角,Dokcer容器是Docker镜像的运行状态

Dokcer镜像结构

rootfs

Docker镜像的文件内容以及一些运行Docker容器所需要的配置文件组成了Dokcer容器运行的静态文件系统rootfs。

rootfs是Docker容器启动时内部进程可见的文件系统,即Docker的根目录。通常包括类Unix系统的文件目录,如:/dev /usr /bin /etc /tmp /lib以及Docker运行所需要的配置、工具等。

Docker Daemon为容器过载rootfs是,会先将rootfs设为只读模式。挂载完毕之后利用联合挂载技术在已有的只读rootfs上再挂载一个读写层,可读写层就处于文件系统的最顶层,只有在Docker容器运行过程中文件系统变化是,才会把变化写到可读写层。

Docker镜像主要特点

分层

Docker镜像才有分层的方式构建,每个镜像都由一系列镜像层构成。可读写层始终处于文件系统最上层,当需要修改镜像内某个文件是,只对处于最上方的可读写层进行修改,不覆写下层文件内容,已有文件在读写层中原始文件依然存在,但会呗新的锁屏蔽。

使用docker commit提交修改保存为新的镜像时,保存的是最上层的读写层被更新的文件,原始文件未保存。

写时复制(copy-on-write)

Docker镜像使用了写时复制的策略,多个容易共享同一个镜像时,启动的时候并不需要单独复制一份镜像,而是将所有镜像层以只读方式挂载到一个挂载点,再在上面覆盖一个可读写层。

未更改文件内容时,所有容器共享同一份镜像数据。

在发生更改时,才把内容写到可读写层,隐藏老版本的文件内容。

联合挂载

联合挂载就是在一个挂载点同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,,使得最终可见的文件系统将会包含整合之后各层的文件和目录。实现这种挂载技术的文件系统被称为联合挂载系统。

内容寻址

顾名思义,内容寻址是根据文件内容来索引镜像和镜像层。对镜像层的内容进行校验和,生成一个内容Hash值,并以此Hash值作为镜像层唯一标识。

该机制提高了镜像的安全性,并在pull 、push、load、save之后检测镜像完整性。

同时,基于镜像层的Hash校验和,在一定程度上减少了ID的冲突,增强了镜像的共享。

Docker镜像的几个关键概念

registry

registry用于保存Docker镜像,包括镜像层次结构与镜像元数据

respository

repository是由具有某个功能的Docker镜像的所有迭代版本构成的镜像组。registry由一系列经过命名的repository组成。

用户仓库命名有用户名和仓库名自称,userName/repositoryName

manifest

manifest(描述文件)主要存在于registry中作为Docker镜像的元数据文件,在pull、push、save、load中作为镜像接口和基础信息的描述文件。

在镜像呗pull或者load到本地宿主机时,manifest被转化为本地镜像配置文件config

image和layer

image是用来存储一组镜像相关的元数据信息,主要包括镜像的架构(amd64)、镜像的默认配置信息、构建镜像的容器配置信息、包含所有镜像层信息的rootfs。Docker根据rootfs中的diff_id计算出内容寻址的索引(chainId)莱获取layer信息,从而进一步获取镜像信息。

layer(镜像层)是用来管理镜像层的中间概念,主要存放了镜像层的diff_id、size、cache-id和parent等,实际的文件内容有存储驱动莱管理,可通过cache-id在本地索引到

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,495评论 15 147
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,371评论 0 27
  • 0x01 核心概念 Docker镜像类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统...
    闲云逸心阅读 4,684评论 0 9
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,464评论 0 120
  • 看到她从专科生到研究生我是衷心的祝福,只是我觉着的吧,我是达不到了啊哈!
    租的阅读 141评论 0 0