Docker镜像在主机上的存储位置

Docker镜像在主机上的存储位置

技术背景

在使用Docker时,了解镜像的存储位置至关重要。这有助于我们管理磁盘空间、排查问题以及进行数据备份等操作。Docker的存储位置会因操作系统和所使用的存储驱动不同而有所差异。

实现步骤

1. 查看存储驱动

可以使用docker info命令查看当前Docker使用的存储驱动。例如:

1
docker info

该命令的输出中会包含Storage Driver字段,常见的存储驱动有aufsoverlay2devicemapper等。

2. 根据存储驱动和操作系统确定镜像存储位置

Linux系统

  • aufs驱动
    • 镜像文件内容存储在/var/lib/docker/aufs/diff/<id>目录下,其中<id>是镜像的ID。
    • 本地镜像信息存储在/var/lib/docker/repositories-aufs文件中,该文件为JSON格式,可使用docker images命令查看。
  • overlay2驱动
    • 镜像默认存储在/var/lib/docker/overlay2目录下。例如,在Fedora 29系统中,使用docker image inspect <image_id>命令可以查看镜像的详细信息,其中GraphDriver字段会显示镜像层的具体路径。
  • devicemapper驱动
    • 镜像数据存储在/var/lib/docker/devicemapper/devicemapper/data文件中。
    • 镜像元数据存储在/var/lib/docker/devicemapper/devicemapper/metadata文件中。

macOS系统

  • Docker for Mac Application
    • 截至2019年1月15日,镜像和容器数据存储在~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw文件中。此前,数据存储在~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2文件中。

Windows系统

  • Docker for Windows(使用Hyper - V)
    • 数据存储在C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx文件中。
    • 从Windows 10周年更新版开始,部分镜像文件存储在C:\ProgramData\docker\windowsfilter目录下。
  • Docker Desktop:可以通过点击系统托盘的Docker图标,选择“Settings”,在“Advanced”选项卡中查看磁盘镜像位置。

核心代码

查看Docker根目录

1
docker info | grep 'Docker Root Dir:' | cut -d':' -f2 | sed 's/^ *//g'

该命令可以提取出Docker的根目录。

查看镜像层信息

1
docker image inspect <image_id>

通过该命令可以查看指定镜像的详细信息,包括镜像层的路径。

最佳实践

  • 定期清理无用镜像:使用docker image prune命令清理无用的镜像,释放磁盘空间。
  • 备份重要镜像:可以使用docker save命令将重要的镜像保存为文件,例如:
1
docker save -o <output_file.tar> <image_id>

然后将文件进行备份。

常见问题

1. 更改存储驱动后镜像数据会迁移吗?

如果在Docker已经运行且有镜像和容器的情况下更改存储驱动,Docker不会自动迁移数据。需要手动处理数据迁移,或者重新拉取和创建镜像。

2. 在macOS上无法找到/var/lib/docker目录怎么办?

在macOS上,Docker运行在一个虚拟机中,/var/lib/docker是虚拟机内的路径。可以通过docker run --rm -it -v /:/vm-root alpine:edge ls -l /vm-root/var/lib/docker命令查看虚拟机内的Docker目录。

3. 如何查看镜像占用的磁盘空间?

可以使用du -sh /var/lib/docker/<storage_driver>/<image_id>命令查看指定镜像占用的磁盘空间。例如,对于overlay2驱动,可以使用du -sh /var/lib/docker/overlay2/<image_id>


Docker镜像在主机上的存储位置
https://119291.xyz/posts/2025-04-22.docker-image-storage-location-on-host/
作者
ww
发布于
2025年4月23日
许可协议