docker GraphDriver

这里我们了解一下docker的镜像存储,在Docker中,一个很重要的概念就是GraphDriver,它主要用于管理和维护镜像,包括把镜像从仓库下载下来,到运行时把镜像挂载起来可以被容器访问等,都是GraphDriver去完成的。

下面是我们运行的一个nginx容器,我们可以看一下他的GraphDriver,注意这里用的docker存储驱动是overlay2

[root@master1 local-path-provisioner]# docker container inspect e5b3a9ffedc3 | jq '.[0].GraphDriver'
{
  "Data": {
    "LowerDir": "/var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8-init/diff:/var/lib/docker/overlay2/21c384999479ac7770fc529fbbbe87ad6b89585acb4e460fe3920f52896958e4/diff:/var/lib/docker/overlay2/cd0400872702c8cc9322334ed39cb09112555d2cf74d81c23be8dd68ec31654b/diff:/var/lib/docker/overlay2/bd28689eeca35806faf0af4107e47c3702f313ac5e61c14b0fffe776623c828b/diff:/var/lib/docker/overlay2/22e64d7e83df19b396b1cf3cc6607882093e3e98a1ed01b0565b827b33c16673/diff:/var/lib/docker/overlay2/4f384576266bcb3a4a349c3c3e23479cf711818393e0b637584a1219d75de916/diff:/var/lib/docker/overlay2/49b34daab651ed7c623ff8bc31e2cc42cd8a2068dc1195bb5a858f62a570a9b6/diff",
    "MergedDir": "/var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8/merged",
    "UpperDir": "/var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8/diff",
    "WorkDir": "/var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8/work"
  },
  "Name": "overlay2"
}

如上所示,要想了解GraphDriver,就是了解那几个目录,下面我们就详细的学习这四个目录分别代表什么。这个也就是层的概念,在docker中,层表示文件系统的变化集合,每个层表示对文件系统的改动,无非就是添加,修改和删除的动作。

下面截取一下官方的说法

  • LowerDir:包含容器内所有层的文件系统,最后一层除外
  • UpperDir:容器最上层的文件系统。这也是反映任何运行时修改的地方。
  • MergedDir:文件系统所有层的组合视图。
  • WorkDir:用于管理文件系统的内部工作目录。

下面就根据上面起的nginx,我们实操一下验证一下

LowerDir

我们先看一下该字段下各个目录下的内容

 这里我把nginx这个镜像的dockerfile,通过history命令拿到了,那个xxxxxx-init是容器运行时生成的,这是用来存储和容器环境相关内容的只读层,每台机器上这里面的内容可能也不一样,然后其他各层的对应关系如下(当然,我们可以直接inspect [IMAGE ID]查看的,但是这个又必须谈到我们docker数据管理_leechm的博客-CSDN博客中关于docker overlay存储驱动的小实验了)

”最后一层除外“这个意思就是我们的可写层,我们对容器的修改,都是在这层上面进行的,即我们容器里面的aaaa这个文件在LowerDir里看不到。

 MergedDir

在这里我们可以看到整个容器里面的文件系统,包括修改的

[root@master1 ~]# ls /var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8/merged/
aaaa  bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@master1 ~]# 

UpperDir

[root@master1 ~]# ls /var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8/diff/
aaaa  etc  root  run  var

WorkDir

[root@master1 ~]# ls /var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8/work/
work
[root@master1 ~]# ls /var/lib/docker/overlay2/9b65847baed00b1a56f3ec45785e22b86c24ed747e341449e2d5a965b43769d8/work/work/
[root@master1 ~]# 

参考资料:

https://blog.px.dev/container-filesystems/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值