- 存储镜像到宿主机:
- 存储镜像内容
- 在graph 中注册镜像信息
- 镜像注册: 每一层docker layer的image都可以认为有两个部分组成。
- 镜像中的文件系统, 可以认为是未来的容器中的静态文件内容。
- 容器的json文件, 包含基本属性信息和动态信息包括env等等。
![](https://img.haomeiwen.com/i1440106/346c5560787047b3.png)
- 验证镜像ID
- 验证ID合法
- 验证镜像是否存在
- 初始化镜像目录: 防止路径冲突; 删除 graph.driver 中的指定内容, 即如果该镜像在graph.driver中存在的话, unmount 该镜像在宿主机上的路径, 并将目录完全删除。
- 创建镜像路径
创建路径完毕之后, Docker Daemon 首先将镜像所有祖先通过aufs系统mount到mnt下指定点,最终直接返回镜像所在rootfs路径, 以便后续直接在该路径下解压Docker 镜像具体内容(只包含layer内容)
![](https://img.haomeiwen.com/i1440106/2cb3cc7035c74594.png)
Layers: 该镜像所有祖先镜像的镜像ID
- Create函数:创建 layers, diff, mnt目录并存储metadata在layers中。
- Get函数: mount祖先镜像并返回根目录。
- 存储镜像内容:
*镜像压缩内容
*镜像json信息
网友评论