当前位置: 移动技术网 > 网络运营>服务器>虚拟主机 > Docker aufs存储驱动layer、diff、mnt目录的区别介绍

Docker aufs存储驱动layer、diff、mnt目录的区别介绍

2019年04月19日  | 移动技术网网络运营  | 我要评论
docker基础信息   首先,先查询docker使用的后端存储。使用命令docker info,主要关注storage driver相关的部分。 $ dock

docker基础信息

  首先,先查询docker使用的后端存储。使用命令docker info,主要关注storage driver相关的部分。

$ docker info
...
server version: 1.12.6
storage driver: aufs
 root dir: /var/lib/docker/aufs
 backing filesystem: extfs
 dirs: 84
 dirperm1 supported: true
...

  由上可见,docker的版本是1.12.6。使用的后端存储是aufs文件系统,并且其根目录是/var/lib/docker/aufs。

docker镜像信息

列出所有docker镜像

$ docker images 
repository                      tag         image id      created       size
ubuntu      latest       0ef2e08ed3fa    6 weeks ago     130 mb

  可以看出,现在的环境中,只有一个镜像,其image id为0ef2e08ed3fa。

docker镜像详细信息

  使用docker inspect [docker image id]命令可以查询镜像的详细信息,.rootfs.layers部分可以看出该镜像总共包含五层,不过从docker v1.10之后,子镜像id并不与根目录中的文件名或目录名一致。

layer目录

  layer中镜像id对应的是一个文件,文件的内容是就是该镜像的祖先镜像列表,

$ ls -l /var/lib/docker/aufs/layers
total 16
-rw-r--r-- 1 root root 65 apr 10 20:38 0970941dc3951f04f21bbbac1180b300006a22a970d4a04c269ac9de34e1bd47
-rw-r--r-- 1 root root 130 apr 10 20:38 312d24c768f671045eabed1415a2ffc67dadea4e59b88c37bd2366a2f5b0fad9
-rw-r--r-- 1 root root 195 apr 10 20:38 8317eee16b68c1620b59e38208d903e9f8f06e2b5f9cc29089eae373bfe491ce
-rw-r--r-- 1 root root  0 apr 10 20:37 d2adfba71f24c5c409df4abef47f3caf4861f37b822f9ea3ed945f61e9aef77f
-rw-r--r-- 1 root root 260 apr 10 20:38 eef7e551d5f8eaf2a7f1c54effef0f28a97978be3e79a2a7dd30f1962071c981

  由于环境中只有一个docker镜像,那么根据该目录下文件的大小,就可以得出大小最大的文件就对应docker镜像中最上层的子镜像(因为其父镜像最多)。

$ cat /var/lib/docker/aufs/layers/eef7e551d5f8eaf2a7f1c54effef0f28a97978be3e79a2a7dd30f1962071c981
8317eee16b68c1620b59e38208d903e9f8f06e2b5f9cc29089eae373bfe491ce
312d24c768f671045eabed1415a2ffc67dadea4e59b88c37bd2366a2f5b0fad9
0970941dc3951f04f21bbbac1180b300006a22a970d4a04c269ac9de34e1bd47
d2adfba71f24c5c409df4abef47f3caf4861f37b822f9ea3ed945f61e9aef77f

diff目录

  diff目录中,包含了五个子目录,对应了docker镜像的五个子镜像。每个目录中,包含了子镜像存储的真实文件和目录。

$ ls -l /var/lib/docker/aufs/diff/eef7e551d5f8eaf2a7f1c54effef0f28a97978be3e79a2a7dd30f1962071c981
total 4
drwxr-xr-x 3 root root 4096 feb 28 03:41 run

  在上面示例种的子镜像层中,只有一个run的目录。

mnt目录

  mnt目录中,也包含了五个子目录,对应了docker镜像的五个子镜像。

  当使用该镜像创建一个容器后,在该层又会多出容器对应的层,以及该容器的init层。

  运行中的容器映射在 /var/lib/docker/aufs/mnt/<container-id>下,这就是aufs给容器和它下层layer的一个mount point。如果容器没有运行了,依然还有这个目录,但却是个空目录,因为aufs只在容器运行时才映射。除此之外,还有一个<container-id>-init的目录,表示init层。docker 1.10之上的版本,目录名同样不和容器id对应。

  容器的可写层存储在目录 /var/lib/docker/aufs/diff/,即使容器停止了,容器对应的目录依然存在。只有删除容器时,对应的目录才会删除。

以上所述是小编给大家介绍的docker aufs存储驱动layer、diff、mnt目录的区别,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网