Docker学习(09)——docker镜像

1. 概念

Docker镜像是由文件系统叠加而成。最底端是一个引导文件系统,即bootfs。当一个容器启动时,它将被移到内存,而引导文件系统会被卸载,以留出更多的内存供initd磁盘镜像使用。

Dcoker镜像的第二层是root文件系统rootfs,它位于引导文件系统之上,rootfs可以是一种或多种操作系统。

2. 流程

传统的linux引导过程中,root文件系统会最先以只读的方式加载,当引导结束并完成了完整性检查后,它才会被切换为读写模式。

在Docker里,root文件系统永远只能是只读状态,并且Docker利用联合加载技术又会在root文件系统层之上加载更多的只读文件系统。

3. 联合加载技术

联合加载技术指的是一次同事加载多个文件系统,但是在外面看只能看到一个文件系统。联合加载会将各层文件系统叠加在一起,这样最终的文件系统会包含所有底层的文件和目录。

Docker将这样的文件系统称为镜像。一个镜像可以放到另一个镜像的顶部。位于下面的镜像称为父镜像(parent image),最底部的镜像称为基础镜像(base image)。

当一个镜像启动容器时,Docker会在该镜像的最顶层加载一个读写文件系统。

4. 图例

 

 当Docker第一次启动一个容器时,初始的读写是空的。当文件系统发生变化时,这些变化都会应用到这一层上。比如如果想修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层。该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏。这种机制称为写时复制(copy on write)。

每个只读镜像层都是只读的,并且以后永远不会变化。当创建一个新容器时,Docker会构建出一个镜像栈,并在栈的最顶端添加一个读写层,这个读写层再加上下面的镜像层已经一些配置数据,就构成了一个容器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值