Technical writing
docker desktop 迁移已下载的镜像、容器和 Docker 卷
#推荐方法:通过 Docker Desktop 移动
-
在其他盘创建一个空目录,例如:
D:\DockerData -
打开 Docker Desktop。
-
进入:
Settings(设置) → Resources(资源) → Advanced(高级) -
找到 Disk image location(磁盘映像位置)。
-
点击 Browse(浏览),选择:
D:\DockerData -
点击 Apply & Restart(应用并重启)。
Docker Desktop 会自动把现有的:
- Docker 镜像
- 容器
- 构建缓存
- Docker 命名卷
- WSL 2 虚拟磁盘
迁移到新位置。Windows 使用 WSL 2 后端时,Docker 数据默认通常位于:
C:\Users\你的用户名\AppData\Local\Docker\wsl
官方推荐直接从 Docker Desktop 的设置页面修改位置。(docs.docker.com)
#移动前注意
- 最好先停止正在运行的容器。
- 重要数据库数据建议先备份。
- 迁移过程中不要强制关闭 Docker Desktop。
- 新目录最好是空目录。
- 确保目标盘是本机 NTFS 磁盘,尽量不要放移动硬盘、网络盘或同步网盘。
- 不要直接手动剪切下面的目录,否则 Docker Desktop 可能无法识别原来的镜像和容器:
C:\Users\你的用户名\AppData\Local\Docker
#如果 C 盘空间太少,迁移启动不了
可以先查看 Docker 占用:
docker system df
清理停止的容器、无用网络和悬空镜像:
docker system prune
如果确定所有未使用镜像都不要了,可以使用:
docker system prune -a
如果还要删除未使用的 Docker 卷:
docker system prune -a --volumes
最后一条风险较高:可能删除数据库等持久化数据,除非确定卷里的数据不需要,否则不要加 --volumes。
#如果找不到 “Disk image location”
先确认当前使用 Linux 容器和 WSL 2:
Settings
→ General
→ Use the WSL 2 based engine
然后更新 Docker Desktop。Docker Desktop 从 **4.32.0(2024年7月4日发布)**开始明确支持在 Windows WSL 2 后端中直接移动数据到其他磁盘。(docs.docker.com)
#另外一种情况:项目文件也在 C 盘
如果 docker-compose.yml 使用这种映射:
volumes:
- C:\projects\data:/var/lib/mysql
这属于 bind mount(主机目录映射),不在 Docker 磁盘映像里面,不会随上述操作自动移动。你需要:
- 停止容器;
- 把
C:\projects\data移到例如D:\projects\data; - 修改 Compose 文件:
volumes: - D:\projects\data:/var/lib/mysql - 重新启动:
docker compose up -d
所以通常要分别检查两部分:Docker 自身数据迁移到 D 盘,以及项目/数据库映射目录是否也需要迁移。