docker 镜像宿主机上本地存储的位置默认在哪里

在 Docker 中,镜像、容器和其他相关数据的默认存储位置取决于宿主机的操作系统。以下是不同操作系统下的默认存储路径及其管理要点:


一、Linux 系统(默认路径)

1. 默认存储目录

/var/lib/docker/

包含以下关键子目录:

  • overlay2/:镜像层和容器文件系统的实际存储(默认使用 overlay2 存储驱动)

  • image/:镜像元数据

  • containers/:容器运行时数据

  • volumes/:持久化卷数据

2. 验证存储位置

docker info | grep "Docker Root Dir"
# 输出示例:Docker Root Dir: /var/lib/docker

3. 修改默认路径

通过修改 /etc/docker/daemon.json 指定新路径:

{
  "data-root": "/new/path/to/docker"
}

然后重启 Docker 服务:

sudo systemctl restart docker

二、macOS(Docker Desktop)

1. 底层机制

macOS 的 Docker Desktop 实际上是在 Linux 虚拟机(VM)中运行 Docker,宿主机的路径是虚拟机的路径。

2. 访问虚拟机内部

# 进入 Docker 的 Linux VM
docker run -it --rm --privileged --pid=host alpine:latest nsenter -t 1 -m -u -n -i sh

# 在 VM 内查看存储路径
ls /var/lib/docker/

3. 宿主机对应文件

Docker 数据以 .qcow2 或 .raw 格式存储在:

~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

三、Windows(Docker Desktop)

1. WSL 2 后端

默认存储在 WSL 2 发行版的虚拟磁盘中:

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\

2. Hyper-V 后端

存储在 Hyper-V 虚拟机的 VHDX 文件中:

%USERPROFILE%\AppData\Local\Docker\wsl\data\ext4.vhdx

四、关键注意事项

  1. 空间清理

    • 定期清理无用数据:

      docker system prune -a
    • 查看详细空间使用:

      docker system df
  2. 备份恢复

    • 备份整个 /var/lib/docker 目录即可备份所有 Docker 数据。

  3. 存储驱动差异

    • overlay2(Linux 默认):高效利用层存储

    • aufs/devicemapper:旧版本可能使用

    • 查看当前驱动:

      docker info | grep "Storage Driver"
  4. 生产环境建议

    • 将 Docker 数据目录挂载到独立磁盘分区:

      /dev/sdb1 /var/lib/docker xfs defaults 0 0

五、特殊场景处理

1. 镜像导出到宿主机

docker save -o /path/on/host/image.tar my-image:tag

2. 宿主机直接操作镜像层

# 查看镜像层内容(需 root 权限)
sudo ls /var/lib/docker/overlay2/<layer-id>/diff

3. 迁移 Docker 数据

# 停止 Docker → 复制数据 → 修改 data-root → 重启
sudo systemctl stop docker
rsync -aqxP /var/lib/docker/ /new/path/

通过理解这些存储路径,您可以更好地管理 Docker 的磁盘空间、备份关键数据,并在必要时进行迁移或清理操作。

posted @ 2025-06-26 09:38  郭慕荣  阅读(1286)  评论(0)    收藏  举报