《Docker 源码分析(11)》 学习笔记

  1. 存储镜像到宿主机:
    • 存储镜像内容
    • 在graph 中注册镜像信息
  2. 镜像注册: 每一层docker layer的image都可以认为有两个部分组成。
  • 镜像中的文件系统, 可以认为是未来的容器中的静态文件内容。
  • 容器的json文件, 包含基本属性信息和动态信息包括env等等。
《Docker 源码分析(11)》 学习笔记_第1张图片
Register 过程
  1. 验证镜像ID
  • 验证ID合法
  • 验证镜像是否存在
  • 初始化镜像目录: 防止路径冲突; 删除 graph.driver 中的指定内容, 即如果该镜像在graph.driver中存在的话, unmount 该镜像在宿主机上的路径, 并将目录完全删除。
  1. 创建镜像路径
    创建路径完毕之后, Docker Daemon 首先将镜像所有祖先通过aufs系统mount到mnt下指定点,最终直接返回镜像所在rootfs路径, 以便后续直接在该路径下解压Docker 镜像具体内容(只包含layer内容)
《Docker 源码分析(11)》 学习笔记_第2张图片
1,2,3 为镜像ID

Layers: 该镜像所有祖先镜像的镜像ID

  • Create函数:创建 layers, diff, mnt目录并存储metadata在layers中。
  • Get函数: mount祖先镜像并返回根目录。
  1. 存储镜像内容:
    *镜像压缩内容
    *镜像json信息

你可能感兴趣的:(《Docker 源码分析(11)》 学习笔记)