推荐方案二(仅迁移docker.raw):退出docker desktop后,将docker.raw移至外接ssd并创建软链接,兼容ntfs/exfat/apfs,操作稳妥且无需挂载路径稳定;方案一需修改daemon.json指定data-root,仅推荐apfs格式且确保开机自动挂载。

Mac上Docker Desktop默认将虚拟机磁盘文件 Docker.raw 预分配在系统盘 ~/Library/Containers/com.docker.docker/Data/vms/0/ 下,单个文件常达64GB以上,极易挤爆Mac内置SSD。必须把 Docker.raw 移动到外接SSD移动硬盘释放系统盘空间,且要确保Docker Desktop能正常识别并启动。
确认外接SSD已正确挂载且格式兼容
打开“访达”→左侧边栏查看外接SSD是否显示为已连接设备;若未显示,请先检查USB线、接口或重新插拔。右键点击该磁盘→“显示简介”,确认“格式”为 APFS 或 Mac OS 扩展(日志式);若显示为“ExFAT”或“NTFS”,则不能直接用于方案一(data-root配置),但可安全用于方案二(仅移动Docker.raw)。
终端中运行:df -h | grep -i "disk",找到你的外接SSD挂载路径,例如 /Volumes/MySSD——记下这个完整路径,后续所有操作都依赖它。
方案一:修改 daemon.json 指向外接SSD(推荐APFS格式硬盘)
此方法让Docker Desktop完全使用外接SSD作为数据根目录,包括镜像、容器、构建缓存等全部落盘于此,适合长期稳定使用。
第一步:退出Docker Desktop。点击菜单栏鲸鱼图标→“Quit Docker Desktop”。
第二步:创建目标目录。在你的外接SSD根目录下新建专用文件夹,例如:mkdir -p "/Volumes/MySSD/docker-data"。注意路径中不能含空格或中文,否则Docker会启动失败。
第三步:编辑daemon.json配置文件。执行:mkdir -p ~/.docker && nano ~/.docker/daemon.json,输入以下内容并保存:
{ "data-root": "/Volumes/MySSD/docker-data" }
⚠️ 注意:必须确保外接SSD在每次开机后自动挂载且路径不变,否则Docker Desktop将无法启动并报错“cannot find data-root”。如不确定,优先选方案二。
方案二:仅迁移 Docker.raw 文件(兼容NTFS/ExFAT/AFPS所有格式)
不改配置,只把占用最大的 Docker.raw 文件挪走,用符号链接骗过Docker Desktop。这是最稳妥、兼容性最强的操作,尤其适合挂载Windows NTFS格式的高速外接SSD。
方法一:手动执行迁移(全程终端操作)
1. 退出Docker Desktop(菜单栏→Quit);
2. 备份原文件(可选但强烈建议):cp ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw ~/Desktop/Docker.raw.bak;
3. 将 Docker.raw 移动到外接SSD:mv ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw "/Volumes/MySSD/Docker.raw";
4. 创建软链接还原路径:ln -sf "/Volumes/MySSD/Docker.raw" ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw;
5. 重启Docker Desktop,观察鲸鱼图标是否变蓝并能正常拉取镜像。
方法二:使用官方推荐脚本(需自行保存并赋予执行权限)
创建脚本文件 move_docker_raw.sh,内容如下:
#!/bin/bash<br>echo "请输入外接SSD完整路径(如 /Volumes/MySSD):" ; read VOLUME_PATH<br>if [ ! -d "$VOLUME_PATH" ]; then echo "路径不存在!退出"; exit 1; fi<br>killall "Docker" 2>/dev/null<br>sleep 3<br>mv ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw "$VOLUME_PATH/Docker.raw"<br>ln -sf "$VOLUME_PATH/Docker.raw" ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw<br>echo "完成。请手动启动 Docker Desktop。"
保存后执行:chmod +x move_docker_raw.sh && ./move_docker_raw.sh,按提示输入路径即可。
验证是否生效
启动Docker Desktop后,打开终端执行:docker info | grep "Docker Root Dir"。若看到输出为 Docker Root Dir: /Users/xxx/Library/Containers/com.docker.docker/Data/vms/0/data,说明方案二成功;若输出为 Docker Root Dir: /Volumes/MySSD/docker-data,说明方案一成功。
再运行:ls -lh "/Volumes/MySSD/" | grep Docker.raw,确认该文件真实存在于外接SSD上,且大小与迁移前一致。
最后拉一个镜像测试:docker pull hello-world,无报错即表示路径修改已稳定可用。











