插件窝 干货文章 docker中的image放在哪里

docker中的image放在哪里

Docker 存储 镜像 驱动 494    来源:    2025-04-28

在 Docker 中,Image(镜像)默认存储在宿主机的特定目录中,具体位置取决于操作系统和存储驱动类型。以下是详细说明:


1. 默认存储路径

Linux 系统

  • 路径: /var/lib/docker/
    • 镜像文件存储在子目录中:
    • overlay2/(默认存储驱动):镜像层(layers)和元数据。
    • image/:存储驱动相关的元数据。
    • containers/:容器数据。

macOS / Windows(Docker Desktop)

  • Docker Desktop 使用虚拟机(Linux VM)运行 Docker,镜像实际存储在虚拟机内。
    • 查看路径:通过 Docker Desktop 的 GUI 设置 → Resources → Disk image location 可查看虚拟磁盘文件(如 ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw)。
    • 访问虚拟机文件:需通过终端进入虚拟机: bash docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh 然后查看 /var/lib/docker/

2. 查看镜像存储信息

方法1:使用 docker info

docker info | grep "Docker Root Dir"

输出示例:

Docker Root Dir: /var/lib/docker

方法2:检查存储驱动

docker info | grep "Storage Driver"

输出示例:

Storage Driver: overlay2

3. 修改默认存储路径

如果需要更改镜像存储位置(例如换到更大磁盘):

Linux 系统

  1. 停止 Docker 服务: bash sudo systemctl stop docker
  2. 迁移原有数据: bash sudo rsync -avz /var/lib/docker /new/path/
  3. 修改配置文件(如 /etc/docker/daemon.json): json { "data-root": "/new/path/docker" }
  4. 重启 Docker: bash sudo systemctl start docker

macOS/Windows(Docker Desktop)

通过 GUI 修改虚拟磁盘位置:
Settings → Resources → Advanced → Disk image location.


4. 镜像的物理存储结构

  • 分层存储:每个镜像由多个只读层(Layer)组成,存储在 /var/lib/docker/overlay2/(以 overlay2 驱动为例)。
  • 查看镜像层bash docker inspect <IMAGE_ID> | grep "Layers"
  • 手动清理镜像bash docker system prune -a # 删除所有未使用的镜像

5. 注意事项

  • 空间不足:如果 /var/lib/docker 所在磁盘空间不足,可能导致 Docker 无法运行。
  • 权限问题:直接操作 /var/lib/docker 需要 root 权限。
  • 存储驱动差异:不同驱动(如 aufsdevicemapper)的存储结构可能不同。

通过以上方法,你可以定位和管理 Docker 镜像的存储位置。如有其他问题,欢迎进一步提问!