Docker - Docker 镜像 简介
来源:互联网
概述
简单介绍一下 docker 镜像的概念
1. 背景
复习 docker
镜像是 docker 最基础, 最重要的概念之一
所以正式使用之前, 最好有所理解和认识
2. 镜像
概述
简单描述
理解不够深入, 内容可能会有偏差
1. 镜像到底是什么
概述
大致说明镜像是什么
本质
文件系统的模板
关系类比
镜像 和 容器 的关系
类似于 代码 和 进程 的关系
镜像层(layer)
概述
镜像是由 一个或多个 镜像层组成的
镜像层可以由多个镜像公用
image
概念
docker 为了方便镜像管理, 对镜像元数据做的抽象
用来映射到 镜像数据, 从而方便管理
以后一般不会提这个东西
2. 启动
概述
简述 容器启动
最终的文件系统, 是由一个个镜像叠加后产生的结果
准备
有镜像
宿主机系统已经正常启动
过程
挂载 bootfs
作用
引导 rootfs
结果
引导成功后, 会被卸载
挂载 rootfs
作用
容器的基础文件系统
里面通常会有 操作系统
过程
挂载
检测完成性
最终转为 只读模式
挂载 其他镜像层
作用
在 rootfs 上添加其他的 镜像层
当然这些层也是 只读的
挂载 init-layer
作用
记录特定 容器实例 的属性
环境变量
各种配置
等等
挂载 读写层
作用
挂载对外直接读写的文件系统
执行命令
作用
如果有命令, 就执行
结果
产生了一个 可用的容器
从外面的视角来看, 这个就是一个文件系统
就像那种小说里藏宝图的感觉
藏宝图本身, 有一定透明度
每一张藏宝图, 只有其中一部分
要想得到一章完整的藏宝图, 需要将几张叠在一起看
或者说, 就是 ps 里的 图层
其他的机制, 后面会有描述
可能产生的疑问
分层 是怎么回事
layer
分了那么多层, 到底怎么挂载
只读层
读写层
既然有那么多层, 读写到底怎么办
3. 特性
1. 分层
概述
镜像的分层
layer
镜像的组成
一个基础镜像
通常是操作系统镜像
若干其他分层
通常是各种命令
dockerfile 里, 一个命令就是一层
从外面看
就像一个 文件系统, 而不多个的叠加
只读
启动容器后, 镜像里的内容, 是只读的
具体的写, 需要 联合挂载 和 写时复制 的配合
layer 复用
镜像由多个 layer 组成
layer 是可以复用的
多个镜像, 同时使用一个 layer 层
会影响到后面的 写时复制
2. 联合挂载
概述
整合多个 layer 里的文件系统, 以及 读写文件系统
同时挂载到一个 mountpoint 上
对外看来, 只是一个 联合文件系统
感觉这个, 好像没什么可说的...
3. 写时复制
概述
一种 优化措施
较少并发用户的资源占用
加快复用资源的加载速度
怎么说
平时
大家一起用
写时
复制出一份私有的数据
docker 里就是写到 具体容器的读写层
文件读写
读
没有数据冲突
直接读
有数据冲突
上层会让底层不可见
但不会实质影响底层内容
写
只对 读写层写入
不会影响底层的内容
问题
写入的东西, 不会影响镜像本身
容器挂了, 就没了
如果需要构建新容器, 那该怎么办呢
4. 貌似还有个 内容寻址
但是这个我也不太明白, 不知道从何说起
4. 镜像基本属性
概述
镜像基本属性
查看
解释
概述
简单介绍一下 docker 镜像的概念
1. 背景
复习 docker
镜像是 docker