暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

docker容器及挂载卷存储方法

取证知道 2021-11-19
3061

好久以前我们讲解了docker镜像是如何存储于宿主机中。今天继续探讨一下dockers容器在开启后,又是如何在宿主机上保存的。

Docker在运行起来后,起来后会生成一个sha-256值,并且以前六位作为使用的container ID。

此时,在“/var/lib/docker”文件下的的“containers”文件夹内会生成一个与运行的container的完整ID相同的文件夹,此文件夹就是该容器运行的数据信息所在。

在该文件夹内主要保存容器的信息文件有“config.v2.json”、“hostname”、“hosts”和“resolv.conf”。其中:

config.v2.json:保存这该容器的信息,类似于docker container inspect命令所查看的内容。这个文件很重要,是容器的运行信息。

Hostname:该容器主机的主机名称,如果无特定设置即为container ID

Hosts:此文件与系统hosts文件相同,即IP与域名对应关系的记录。

resolv.conf:该文件记录容器的DNS设置,如果无特定设置即为宿主机的dns。

在“/var/lib/containers”文件夹内记录着容器的运行信息,以及部分运行数据。因为docker的特性,很多时候在容器运行时都是将重要数据向外挂载以保证数据的安全。

Docker的挂载卷一般分为两种,docker管理卷和指定挂载卷。

在docker管理卷时,docker会将容器内的指定目录挂载至由docker管理的一个卷,其分配的位置为“/var/lib/docker/volumes”目录下生成一个sha-256值的文件夹,在该文件夹内的“_data”文件夹则是对应容器内的挂载目录。

以命令“docker run -i -d -v /data busybox:latest”为例,此时容器内的“/data”文件夹会挂载至宿主机上一个文件夹,此随机文件夹是由docker进行分配的,docker会将在“/var/lib/docker/volumes”分配一个目录。

查看该容器下的“config.v2.json”文件,在“MountPoints”项可知,该容器的挂载目录为“/data”,挂载的位置为“Name”项下的“c6d839c2abb67d6a0da9f5aed724397e762cd32cc622397e3c8ed526ebef6355”。

此时查看“/var/lib/docker/volumes”下的“c6d839c2abb67d6a0da9f5aed724397e762cd32cc622397e3c8ed526ebef6355”文件夹,会有一个“_data”文件夹,该文件夹则为容器挂载目录“/data”的实际存储位置。

Docker的第二种卷管理方式是指定挂载卷,以命令“docker run -i -d -v /docker/busybox:/data busybox:latest”为例,在启动容器时,会将容器内的“/data”目录挂载至宿主机的指定目录“/docker/busybox”目录下。

此时查看根下的目录会发现多出一个“docker”目录,并在其下多了一个“busybox”目录。

通过查看“/var/lib/docker/containers/fe2bbe39a50891726cc9d3aac8a2346cccf55e9e06a3ae71db2b767d6fd7c736”目录下的“config.v2.json”文件,在“MountPoints”项可知容器的挂载目录为“/data”,而挂载的位置已经不是“Name”项,则是“Source”项下的“/docker/busybox”。

通过容器目录下的“config.v2.json”文件,可以得到容器在启动时所挂载的目录即挂载位置。


文章转载自取证知道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论