MacOS 在使用 docker 的过程中出现以下错误:
sh
failed to send write: write /var/lib/desktop-containerd/daemon/io.containerd.content.v1.content/ingest/d8d3a8edbc49a0344e84320ead6a28a14a3b9cba48be7a58acacfef312fb70b5/data: no space left on device: unknown
这个错误非常常见,本质原因就是 Docker(更准确说是 containerd 的内容存储目录)磁盘空间不足。不是你的硬盘满了,而是 Docker Desktop 的虚拟磁盘空间已满。
✅ 1. 最常见原因:Docker Desktop 的虚拟磁盘满了
Mac 上 Docker Desktop 默认会创建一个虚拟磁盘 Docker.raw(几十 GB),所有镜像都存里面。
加载一个大镜像 m3e-large-api(好几 GB)就会爆。
✔ 解决方法:增大 Docker 虚拟磁盘大小
路径:
Docker Desktop → Settings → Resources → Advanced → Disk image size
把 Disk image size 调大一点,比如:
- 30GB → 改成 80GB
- 60GB → 改成 120GB
改完后要 Restart Docker。
✅ 2. 删除不用的镜像/容器释放空间(快速见效)
终端执行:
docker system df
看看空间占用情况。
然后清理:
sh
docker system prune -a
如果你想更狠一点:
sh
docker system prune -a --volumes
⚠ 注意:会删除所有不用的镜像、容器、网络和 volume。
✅ 3. 查看 containerd 在 Mac 中的真实空间占用
Mac Docker Desktop 的 containerd 数据目录:
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
你可以看下它占了多大:
ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
如果这个文件已经接近 Docker Desktop 配置的上限,即使硬盘有空间也加载不进去。
✅ 4. 强制清理 containerd 的内容目录(危险,慎用)
你的报错目录:
/var/lib/desktop-containerd/daemon/io.containerd.content.v1.content
如果你确信可以全部清空:
rm -rf /var/lib/desktop-containerd/daemon/io.containerd.content.v1.content/*
⚠ 注意:会导致 containerd 中的内容全部丢失(Docker Desktop 可能需要重启或重置)。
✅ 5. 如果以上都不行:重置 Docker Desktop(杀手锏)
Docker Desktop → Troubleshoot → Reset →
- "Clean / Purge data" 或者
- "Reset to factory defaults"
会清掉全部镜像和容器,但能保证干净。
📌 最推荐的解决方案(强烈建议)
你是加载大模型镜像 m3e-large-api(几 GB),99% 是 Docker Desktop 虚拟磁盘不够大。
👉 把 Docker Desktop 的 disk image size 调大到 80GB 或以上,然后重启,再 docker load。
如果你愿意,可以把以下输出贴给我,我帮你判断更准确:
sh
docker system df
df -h
ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
