✅推荐方案是软链docker.raw所在目录:关闭docker desktop后,将vms/0/data移至外置盘并创建符号链接,重启即可;⚠️进阶方案需进入虚拟机tty软链/var/lib/docker子目录;❌不推荐软链宿主机/var/lib/docker。
macos 上用符号链接迁移 docker 镜像存储路径,核心是把 docker desktop 虚拟机内部的 /var/lib/docker 指向外置盘或大容量分区。但要注意:docker desktop 在 macos 并不直接使用宿主机的 /var/lib/docker,而是运行在一个轻量 linux 虚拟机(hyperkit)里,真实数据存在虚拟磁盘文件 docker.raw 中。所以“软链迁移”实际分两层操作——先迁移虚拟磁盘位置,再在虚拟机内调整数据根目录,或者更稳妥的做法是:只软链虚拟机内的关键子路径(如 volumes 或 overlay2),避免破坏虚拟机结构。
✅ 推荐方案:软链 Docker.raw 所在目录(最安全、最常用)
这是官方支持、风险最低的方式,适用于想把整个 Docker 数据(镜像+容器+卷)移出系统盘的用户。
- 关闭 Docker Desktop(右上角菜单 → Quit Docker Desktop)
- 将整个
vms/0/data目录移到外置盘,例如:mv ~/Library/Containers/com.docker.docker/Data/vms/0/data /Volumes/MySSD/DockerData - 创建符号链接还原原路径:
ln -s /Volumes/MySSD/DockerData ~/Library/Containers/com.docker.docker/Data/vms/0/data - 重启 Docker Desktop,它会自动识别并加载新位置的数据
⚠️ 进阶方案:在虚拟机内软链 /var/lib/docker 子目录(需进入 tty)
适合只想迁移特定高占用部分(比如 volumes 或 overlay2),同时保留系统盘上小体积元数据的情况。需要手动进入 Docker 虚拟机:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 终端执行:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty(按回车确认) - 登录后(默认无密码,直接回车),停用 Docker 服务:
sudo /etc/init.d/docker stop - 把目标目录(如
/var/lib/docker/volumes)移到外置盘挂载点(需提前挂载好,如/mnt/ext/volumes):sudo mv /var/lib/docker/volumes /mnt/ext/ - 建软链:
sudo ln -s /mnt/ext/volumes /var/lib/docker/volumes - 启动服务:
sudo /etc/init.d/docker start,然后exit退出 screen
❌ 不推荐:直接软链宿主机的 /var/lib/docker
macOS 宿主机上没有真实的 /var/lib/docker 目录(Docker Desktop 不走这个路径),强行创建软链无效,还可能干扰其他工具(如 Colima、Rancher Desktop)。
? 补充提醒
- 外置盘建议格式化为 APFS(区分大小写可选)或 Mac OS 扩展(日志式),避免 FAT32/exFAT 不支持 Unix 权限
- 迁移前确保外置盘已正确挂载且有写入权限(可用
ls -l /Volumes/MySSD确认) - 若使用 Time Machine,
~/Library/Containers/com.docker.docker默认被排除,迁移后无需额外设置 - 软链生效后,
docker system df显示的空间占用仍反映虚拟机视角,可用du -sh /Volumes/MySSD/DockerData查看实际磁盘用量










