当前位置: 首页 > 编程笔记 >

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

伍耀
2023-03-14
本文向大家介绍Docker aufs存储驱动layer、diff、mnt目录的区别介绍,包括了Docker aufs存储驱动layer、diff、mnt目录的区别介绍的使用技巧和注意事项,需要的朋友参考一下

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目录的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍oracle中存储函数与存储过程的区别介绍,包括了oracle中存储函数与存储过程的区别介绍的使用技巧和注意事项,需要的朋友参考一下 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,可是也有它们的不同之处,这段时间刚学完函数与存储过程,来给自己做一个总结: 一:存储过程:简单来说就是有名字的pl/sql块。 语法结构:      案例:         

  • 本文向大家介绍详解linux下mnt目录作用,包括了详解linux下mnt目录作用的使用技巧和注意事项,需要的朋友参考一下 linux下mnt目录的作用: mount  英文解释: 登上; 爬上; 攀登; 骑上; 乘上; 跨上  可直接理解为“挂载” 挂接光驱、USB设备的目录,加载后,会在mnt里多出相应设备的目录。mnt是mount的缩写。 Mount命令: 需要注意的: 1、挂载点必须是一个

  • 本文向大家介绍内存和存储之间的区别,包括了内存和存储之间的区别的使用技巧和注意事项,需要的朋友参考一下 记忆 内存允许短期存储数据。存储器通常由寄存器组成。每个寄存器都有一个称为存储位置或存储位置的位置。每个存储位置均由一个地址标识。内存容量由否决定。内存可以存储的位数。内存分为三种主要类型: 高速缓存存储器 主记忆 二级记忆 存储 存储允许长期存储数据。只要程序需要数据,就将数据从存储器复制到内

  • 问题内容: 我试图找到一种方法来检测何时将闪存驱动器插入计算机。到目前为止,我发现的解决方案是轮询更改。这确实告诉我何时插入了闪存驱动器,但是据我所知,没有办法为其找到位置。而双方似乎非常不可靠作为其返回值是实现特定的,但他们似乎是可能返回的任何相关信息,可能有助于找到该目录的唯一方法。 考虑到这一点,以下代码: 给我这个输出: 事实证明,返回驱动器的格式并返回该驱动器的设备文件的位置。据我所知,

  • 本文向大家介绍存储区域网络(SAN)和网络附加存储(NAS)之间的区别,包括了存储区域网络(SAN)和网络附加存储(NAS)之间的区别的使用技巧和注意事项,需要的朋友参考一下 存储区域网络(SAN) 存储区域网络(SAN)用于使用光纤通道和交换机在服务器和存储设备之间传输数据。数据由磁盘块表示。SAN使用SCSI,SATA协议。以下是SAN的重要组件。 节点端口 电缆线 集线器,交换机,导向器作为

  • 问题内容: 我使用的是Oracle ,注意到它包含两个JDBC驱动程序类。 vs.有什么区别? 在我的Java项目中应该使用哪一个? 问题答案: 从Oracle 9i开始,对于Oracle 9i及更高版本,应使用oracle.jdbc.OracleDriver而不是oracle.jdbc.driver.OracleDriver。 - http://tomcat.apache.org/tomcat-