如果我转到 /var/lib/docker/overlay2 并执行“ls”,那么我会得到如下内容:
0349eb19b8ac737f2a93e33f665ab26d95de636bf48de79e6e7d7cdd76c0cd78 0c32910d4c394834e239f0c8f0776b36d87f7567b3120dff92ccd8d0f98577b0 ...
现在,这些文件夹中的一个或多个属于一个容器。我想知道哪个容器使用哪个文件夹?
谢谢
张馆长*_*张馆长 25
可以使用这个命令
for container in $(docker ps --all --quiet --format '{{ .Names }}'); do
echo "$(docker inspect $container --format '{{.GraphDriver.Data.MergedDir }}' | \
grep -Po '^.+?(?=/merged)' ) = $container"
done
Run Code Online (Sandbox Code Playgroud)
BMi*_*tch 11
现在每个文件夹都属于一个容器
不,他们没有。容器可以使用这些文件夹中的一个或多个。但同一个文件夹可能会在多个容器中使用。这就是层重用在 docker 中的工作原理,它被下载或构建一次,然后作为覆盖文件系统中的层重用。
因此,没有从overlay2目录到“a”容器的映射。但是您可以查看每个容器和图像,以了解它用于各个层的目录:
$ docker container inspect --format '{{json .GraphDriver.Data }}' ${container_id} | jq .
{
"LowerDir": "/var/lib/docker/overlay2/772a19168d50648e1bfb156604281a6acedb9025e588fe35da97deb18b95150a-init/diff:/var/lib/docker/overlay2/ixbbgqs1303yho2a3dcwwlw2u/diff:/var/lib/docker/overlay2/vdywc8lgvc3uzoq8z2m2j49io/diff:/var/lib/docker/overlay2/l4ykndb21ul7ttmsdn05ps3q5/diff:/var/lib/docker/overlay2/66fce03abb53f3576b039c5177e687f304d1a7ddb78d57392b8825ab34350299/diff",
"MergedDir": "/var/lib/docker/overlay2/772a19168d50648e1bfb156604281a6acedb9025e588fe35da97deb18b95150a/merged",
"UpperDir": "/var/lib/docker/overlay2/772a19168d50648e1bfb156604281a6acedb9025e588fe35da97deb18b95150a/diff",
"WorkDir": "/var/lib/docker/overlay2/772a19168d50648e1bfb156604281a6acedb9025e588fe35da97deb18b95150a/work"
}
$ docker image inspect --format '{{json .GraphDriver.Data}}' ${image_name} | jq .
{
"LowerDir": "/var/lib/docker/overlay2/vdywc8lgvc3uzoq8z2m2j49io/diff:/var/lib/docker/overlay2/l4ykndb21ul7ttmsdn05ps3q5/diff:/var/lib/docker/overlay2/66fce03abb53f3576b039c5177e687f304d1a7ddb78d57392b8825ab34350299/diff",
"MergedDir": "/var/lib/docker/overlay2/ixbbgqs1303yho2a3dcwwlw2u/merged",
"UpperDir": "/var/lib/docker/overlay2/ixbbgqs1303yho2a3dcwwlw2u/diff",
"WorkDir": "/var/lib/docker/overlay2/ixbbgqs1303yho2a3dcwwlw2u/work"
}
Run Code Online (Sandbox Code Playgroud)
在文件系统级别,您还可以查看/var/lib/docker/containers/${container_id}/config.v2.json
.
请注意,所有这些都是 docker 内部的,并且不能保证在下一个版本中不会改变。您不应该直接与这些文件和目录交互,因为 docker 不知道您是否进行了重大更改,并且不会通过再次下载图层来修复损坏的映像。正如其他人发现的那样,当你打破它时,你可以保留两块碎片作为纪念品,以备不时之需。
小智 1
您可以使用 dockerspect 命令获取有关容器的所有信息,该容器将提供包括卷在内的信息。
docker inspect <container name/id>
Run Code Online (Sandbox Code Playgroud)
您还可以借助命名卷来命名这些卷。
参考: https: //docs.docker.com/storage/volumes/
归档时间: |
|
查看次数: |
13975 次 |
最近记录: |