如果我转到/var/lib/docker/overlay 2并执行“ls”,那么我会得到如下内容:0349eb19b8ac737f2a93e33f665ab26d95de636bf48de79e6e7d7cdd76c0cd78 0c32910d4c394834e239f0c8f0776b36d87f7567b3120dff92ccd8d0f98577b0 ...现在这些文件夹中的一个或多个属于一个容器。我想知道哪个文件夹由哪个容器使用?谢谢
5ssjco0h1#
可以使用此命令
for container in $(docker ps --all --quiet --format '{{ .Names }}'); do echo "$(docker inspect $container --format '{{.GraphDriver.Data.MergedDir }}' | \ grep -Po '^.+?(?=/merged)' ) = $container" done
jk9hmnmh2#
现在这些文件夹中的每一个都属于一个容器不,他们不知道。容器可以使用这些文件夹中的一个或多个。但是同一个文件夹可以在多个容器中使用。这就是层重用在docker中的工作方式,它被下载或构建一次,然后在覆盖文件系统中作为层重用。因此,overlay2目录没有Map到“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" }
在文件系统级别,您还可以查看/var/lib/docker/containers/${container_id}/config.v2.json。请注意,所有这些都是docker的内部结构,不能保证它在下一个版本中不会改变。你不应该直接与这些文件和目录交互,因为docker不知道你是否做了破坏性的更改,也不会通过再次下载层来修复损坏的镜像。正如其他人所发现的,when you break it,你可以保留这两块作为纪念品,什么不做。
/var/lib/docker/containers/${container_id}/config.v2.json
t5zmwmid3#
你可以使用docker inspect命令来获取关于容器的所有信息,该容器将提供包括卷在内的信息。
docker inspect <container name/id>
你也可以在命名卷的帮助下命名这些卷。参考:https://docs.docker.com/storage/volumes/
xu3bshqb4#
我使用下面的方法来识别使用此类文件夹的容器,
#!/bin/bash input="./containerid" while IFS= read -r line do echo "$line" docker inspect $line | grep -i "5b....." done < "$input"
pb3skfrl5#
下面的命令提供了一个很好的容器及其体积,图像和空间使用情况的视图。
docker system df -v
5条答案
按热度按时间5ssjco0h1#
可以使用此命令
jk9hmnmh2#
现在这些文件夹中的每一个都属于一个容器
不,他们不知道。容器可以使用这些文件夹中的一个或多个。但是同一个文件夹可以在多个容器中使用。这就是层重用在docker中的工作方式,它被下载或构建一次,然后在覆盖文件系统中作为层重用。
因此,overlay2目录没有Map到“a”容器。但是你可以查看每个容器和图像,看看它为各个层使用了哪些目录:
在文件系统级别,您还可以查看
/var/lib/docker/containers/${container_id}/config.v2.json
。请注意,所有这些都是docker的内部结构,不能保证它在下一个版本中不会改变。你不应该直接与这些文件和目录交互,因为docker不知道你是否做了破坏性的更改,也不会通过再次下载层来修复损坏的镜像。正如其他人所发现的,when you break it,你可以保留这两块作为纪念品,什么不做。
t5zmwmid3#
你可以使用docker inspect命令来获取关于容器的所有信息,该容器将提供包括卷在内的信息。
你也可以在命名卷的帮助下命名这些卷。
参考:https://docs.docker.com/storage/volumes/
xu3bshqb4#
我使用下面的方法来识别使用此类文件夹的容器,
pb3skfrl5#
下面的命令提供了一个很好的容器及其体积,图像和空间使用情况的视图。