MacOS 在使用 docker: no space left on device: unknown

MacOS 在使用 docker 的过程中出现以下错误:

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

看看空间占用情况。

然后清理:

docker system prune -a

如果你想更狠一点:

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。


如果你愿意,可以把以下输出贴给我,我帮你判断更准确:

docker system df
df -h
ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

在这里插入图片描述

### 解决 Docker 磁盘空间不足的方法 当遇到 `no space left on device` 错误时,表明 Docker 使用的空间已满。这可能发生在任何操作系统上,包括 Linux 和 macOS。 #### 清理未使用Docker 资源 一种常见的解决方案是清理不再需要的 Docker 容器、网络、卷以及悬空镜像。可以使用命令: ```bash docker system prune -a ``` 此命令会移除所有停止的容器、无用的数据卷和网络,还有那些没有关联到标签或容器的镜像[^1]。 对于 Mac 用户来说,在某些情况下即使执行上述操作之后仍然可能会收到同样的错误提示。这是因为 Docker Desktop 应用了虚拟化技术来运行其环境,并且默认分配给这个虚拟磁盘的空间可能是有限制的[^2]。 #### 扩展 Docker 的存储容量 (针对 Mac) 如果是在 MacOS 平台上遇到了这个问题,则应该考虑增加 Docker 桌面应用程序所管理的虚拟磁盘大小。具体做法如下: - 修改完成后记得重启服务使更改生效; 通过这种方式能够有效地缓解由于初始设置过低而导致的空间不够问题[^3]。 #### 对于基于 Linux 的系统进行分区扩展 如果是 Linux 发行版中的 LVM(逻辑卷管理)配置下发生的此类情况,那么还可以尝试对根文件系统的逻辑卷进行在线扩容。不过需要注意的是这种操作通常涉及到了解底层硬件结构的知识并且存在一定风险,建议谨慎行事或者寻求专业人士的帮助[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值