Docker graph driver介绍(1)

简介

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

-         根据每一层镜像,以及该镜像的所有底层镜像的内容生成的content addressable id,下文称为chain-id

对于一个镜像来说,其最底层的layer,其layer-id和chain-id是一样的。

Layer-id和chain-id的存在比较好理解,其中chain-id的概念也是image-spec中定义必须有的,cache-id的存在感觉必要性不大,目前不清楚为什么还要搞一个cache-id,猜测可能是为了向前兼容的原因。Image-id,mount-id和cache-id都是随机生成的,可以合起来跟content addressable id对比理解。

关键目录介绍

/var/lib/docker/overlay

这里存放的是镜像的每一层layer解压后的结果,以及基于每一个镜像生成容器后,对镜像合并挂载后的目录和对应的init目录。这里的i

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值