Docker镜像在主机上的存储位置
Docker镜像在主机上的存储位置
技术背景
在使用Docker时,了解镜像的存储位置至关重要。这有助于我们管理磁盘空间、排查问题以及进行数据备份等操作。Docker的存储位置会因操作系统和所使用的存储驱动不同而有所差异。
实现步骤
1. 查看存储驱动
可以使用docker info
命令查看当前Docker使用的存储驱动。例如:
1 |
|
该命令的输出中会包含Storage Driver
字段,常见的存储驱动有aufs
、overlay2
、devicemapper
等。
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
文件中。
- 截至2019年1月15日,镜像和容器数据存储在
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的根目录。
查看镜像层信息
1 |
|
通过该命令可以查看指定镜像的详细信息,包括镜像层的路径。
最佳实践
- 定期清理无用镜像:使用
docker image prune
命令清理无用的镜像,释放磁盘空间。 - 备份重要镜像:可以使用
docker save
命令将重要的镜像保存为文件,例如:
1 |
|
然后将文件进行备份。
常见问题
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/