简介
Docker的graph driver主要用于管理和维护镜像,包括把镜像从仓库下载下来,到运行时把镜像挂载起来可以被容器访问等,都是graph driver做的。涉及的docker命令有
- Docker pull
- Docker push
- Docker import
- Docker export
- Docker load
- Docker save
- Docker build
Docker的graph driver做的事情,基本上是对docker的image定义的实现,而OCI的image-spec是基于docker的image spec的,所以理论dockergraph driver做的事情,都应该被image-spec的实现所覆盖。
目前docker支持的graph driver有:
- Overlay
- Aufs
- Devicemapper
- Btrfs
- Zfs
- Vfs
这些driver各有优劣,以后会慢慢补充对比。
Overlay driver介绍
Graph driver中最复杂的部门就是梳理清楚在构建各种镜像层关系时涉及的各种id以及他们的组织关系。特别是docker镜像在支持content addressable之后,镜像的id组织关系变得异常复杂。Overlay driver中,对镜像的id会涉及到多种类型:
- 对一个镜像生成的唯一id值,下文称为image-id
- 运行容器时把镜像挂载起来后生成的一个唯一id值,下文称为mount-id
- 对每一个镜像层生成的一个唯一的随机id,下文中称为cache-id
- 根据每一个镜像层的内容单独生成的content addressable id,下文称为layer-id
- 根据每一层镜像,以及该镜像的所有底

本文介绍了Docker的graph driver,特别是Overlay driver的工作原理,包括不同类型的id及其关系,以及关键目录如/var/lib/docker/overlay的详细内容。内容涵盖镜像层的组织结构、container-id、cache-id和chain-id的解释。
2980

被折叠的 条评论
为什么被折叠?



