我设法在/var/lib/docker/containers目录下找到了容器,但我找不到图像。
/var/lib/docker下的目录和文件是什么?
我设法在/var/lib/docker/containers目录下找到了容器,但我找不到图像。
/var/lib/docker下的目录和文件是什么?
当前回答
在Ubuntu上,你可以“玩”运行图像
sudo baobab /var/lib/docker
实际上,图像存储在/var/lib/docker/aufs/diff中
其他回答
在Docker for Windows中,日志在这里:%USERPROFILE%\AppData\Local\Docker
环境:Windows 10 Pro, docker desktop 2.0.3.0 edge
右键单击系统托盘中的docker图标,选择设置-高级:
磁盘映像位置(可通过浏览器编辑):
C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\DockerDesktop.vhdx
(它在那里-文档目录是隐藏的)
使用docker info命令获取docker的主机设置,包括docker的存储路径。
获取docker存储的根路径:
docker info | grep 'Docker Root Dir:' | cut -d':' -f2 | sed 's/^ *//g'
这给出了默认的Ubuntu 22.04和docker——version = docker version 20.10.17, build 100c701安装路径:
/var/lib/docker
使用命令列出该目录的内容和大小:
du -h -d 1 .
给出结果(其他目录):
444K ./buildkit
4,0K ./containers
4,0K ./runtimes
16K ./plugins
4,0K ./trust
4,0K ./tmp
100K ./network
22M ./image
2,0G ./volumes
4,0K ./swarm
9,0G ./overlay2
为了让docker根路径以目录名的一个后缀,你可以在sed 's/$/\/image/g'的末尾添加另一个sed,以后缀/image
命令:
docker info | grep 'Docker Root Dir:' | cut -d':' -f2 | sed 's/^ *//g' | sed 's/$/\/image/g'
给:
/var/lib/docker/image
命令:
docker info | grep 'Docker Root Dir:' | cut -d':' -f2 | sed 's/^ *//g' | sed 's/$/\/overlay2/g'
给:
/var/lib/docker/overlay2
虽然目录的名称似乎不言自明,但图像的内容并不存储在图像目录(22M大小)中,而是存储在图像的信息中。/var/lib/docker/image/overlay2,尤其是/var/lib/docker/image/overlay2/repositories。Json文件,其中包含图像的名称和对应的关于overlay2层的数据。
图像(及其层)的实际数据存储在/var/lib/docker/overlay2(大小为9,0g)
请注意,存储图像重数据的overlay2是docker使用的分层系统,但该分层系统是docker可能使用的众多系统之一(现在或将来)。因此基于硬编码的路径可能是脆弱的。
特别是如果你的意图是将图像导出/保存到文件中,你应该寻找专用的命令:
Docker中保存和导出的区别是什么?
使用上述问题中的命令,您甚至可以将所有图像保存到一个文件中,压缩它,然后通过单个命令将它们导入到其他地方。
如果你想坚持docker路径,例如创建备份,我建议总是使用根路径,例如:
/var/lib/docker
由docker info命令生成,特别是你可能有重要的数据在里面:
/var/lib/docker/volumes
这是for所要求的。通过使用卷持久化数据的数据库映像。
我只能对Ubuntu用户回答这个问题:
使用docker info命令可以找到docker的根目录
Docker目录将在这一行中给出:"Docker根目录:/var/lib/docker"
关于docker镜像,它们存储在docker目录中: /var/lib/docker/aufs/diff/
记住这些东西在docker的所有版本中都是不一样的。目前,我使用的是1.12.3。
/var/lib/docker目录的内容取决于Docker用于存储的驱动程序。
默认情况下,这将是aufs,但可以回落到overlay, overlay2, btrfs, devicemapper或zfs,这取决于你的内核支持。在大多数地方,这将是aufs,但红帽使用设备映射器。
您可以使用-s或——storage-driver=选项手动将存储驱动程序设置为Docker守护进程。
/var/lib/docker/{driver-name}将包含用于映像内容的驱动程序特定存储。 >现在只包含关于图像的元数据,在json和layersize文件中。
对于aufs:
/var/lib/docker/aufs/diff/<id>包含镜像的文件内容。 /var/lib/docker/repositories-aufs是一个包含本地映像信息的JSON文件。这可以通过命令docker图像来查看。
在设备映射器的情况下:
/var/lib/docker/devicemapper/devicemapper/data存放映像 /var/lib/docker/devicemapper/devicemapper/metadata元数据 请注意,这些文件是精简的“稀疏”文件,因此并不像它们看起来那么大。