ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

MongoDB Dev Container 镜像构建报 “no space left on device“ 怎么解决?

2026/9/12 16:32:54 拓冰建站 浏览量
MongoDB Dev Container 镜像构建报 “no space left on device“ 怎么解决? MongoDB Dev Container 镜像构建报 no space left on device 怎么解决【免费下载链接】mongoThe MongoDB Database项目地址: https://gitcode.com/GitHub_Trending/mo/mongo在 VS Code 里用 Dev Containers 构建 MongoDB 开发容器时如果 Docker 的存储空间不足构建会直接失败典型报错是Error: failed to solve: write /var/lib/docker/...: no space left on device这是 MongoDB 仓库 Dev Container 文档里收录的构建失败场景之一。本文按 troubleshooting 文档 给出的路径操作先用docker system df确认磁盘占用再清理 Docker 资源然后按你的 Docker 提供方Docker Desktop / Rancher Desktop扩大磁盘分配最后重新构建容器验证。先确认是磁盘空间问题在宿主机上运行docker system df该命令展示 Docker 的磁盘占用情况。如果输出中 volumes 或 images 的 SIZE 异常大说明空间主要被 Docker 资源占用troubleshooting 文档 把 Volume Fills Up Disk 列为同一类磁盘问题的独立症状。另外可以在容器内用df -h查看磁盘使用情况辅助判断是哪个位置被占满。第一步清理 Docker 资源在宿主机执行删除未被使用的容器、镜像和卷# Remove unused containers, images, and volumes docker system prune -a --volumes注意副作用-a --volumes会一并移除未使用的卷。Dev Container 的 Bazel 缓存、Python venv 等都放在命名卷里见 getting-started 文档 的 Persistent Volumes 一节删除卷意味着这些缓存数据丢失容器重建后会重新生成但已有的构建缓存不复存在。如果只想清理停止的容器可以单独执行# List all containers docker ps -a # Remove all stopped containers docker container prune需要删除某个具体容器时用docker ps -a找到对应的容器 ID下文中的container_id均指这里列出的实际 ID然后docker rm container_id第二步扩大 Docker 磁盘分配文档给出的磁盘建议是README 要求 60 GB 用于容器、工具链和构建产物troubleshooting 文档 建议至少 60 GB并标注 MongoDB 开发推荐 100 GB。按你使用的 Docker 提供方操作Docker Desktop打开 Docker Desktop。进入 Settings → Resources → Disk image size。调整到至少 60 GBMongoDB 开发推荐 100 GB。点击 Apply Restart。Rancher DesktopmacOS / LinuxRancher Desktop 没有调整磁盘大小的 UI需要直接改 VM 配置文件完全停止 Rancher Desktop。创建或编辑 VM 配置文件macOS~/Library/Application Support/rancher-desktop/lima/_config/override.yamlLinux~/.config/rancher-desktop/lima/_config/override.yaml添加或修改磁盘大小设置disk: 100GB启动 Rancher Desktop。如果 Rancher Desktop 之前已经初始化过可能需要执行一次出厂重置Preferences → Troubleshooting → Reset Kubernetes磁盘大小变更才会生效。Rancher DesktopWindowsWSL2磁盘由 WSL2 管理停止 Rancher Desktop。运行wsl --shutdown该命令会关闭 WSL2 虚拟机。按 Microsoft 官方的 WSL2 磁盘空间文档操作扩容troubleshooting 文档 指向 Microsoft Learn 上关于 WSL 磁盘空间的指引。空间仍不足时清理构建缓存与旧卷扩容后磁盘仍然紧张或docker system df显示主要是 volumes 占用大可以进一步处理在容器内清理 Bazel 缓存bazel clean --expunge列出并删除不再需要的卷。docker volume rm会永久丢失卷内数据troubleshooting 文档 原文明确标注 WARNING: loses data!删除前用docker volume ls确认名称# List volumes docker volume ls # Remove specific volume if needed (WARNING: loses data!) docker volume rm old-cache-volume上面的old-cache-volume是文档中的示例卷名替换为你从docker volume ls里确认的实际名称。限制 Bazel 磁盘缓存上限把下面这行追加到容器内的~/.bazelrcecho build --disk_cache~/.cache/bazel --disk_cache_size10G ~/.bazelrc如果只是想轻量清理getting-started 文档 对同一报错给出的处理是docker system prune不带-a --volumes它不会移除卷。重新构建容器并验证磁盘空间恢复后回到 VS Code 重新触发构建Command Palette → Dev Containers: Rebuild Container如果怀疑是卷或缓存残留导致用 Dev Containers: Rebuild Container Without Cache。troubleshooting 文档 的 Rebuild from Scratch 流程是先docker stop container_id和docker rm container_id停掉并删除容器再走无缓存重建。验证方式docker system df确认 Docker 磁盘占用回落到正常水平容器内df -h确认容器可用磁盘充足重新构建时不再出现no space left on device错误构建正常进入 Bazel 编译阶段可用 getting-started 文档 中的bazel build install-mongod作为构建验证目标。限制与注意磁盘建议值在不同文档中表述略有差异README 和 FAQ 给的是 60 GB / at least 60GB 的基线troubleshooting 文档 在此基础上补充 100 GB recommended for MongoDB development。空间确实紧张时优先按后者准备。Rancher Desktop 的磁盘扩容依赖修改 VM 配置文件且已初始化的环境可能需要 Reset Kubernetes 才生效WSL2 下的磁盘扩容则完全走 WSL2 的路径两者不要混用。卷被删后 Bazel 缓存会失效首次构建会变慢这是清理空间的预期代价。【免费下载链接】mongoThe MongoDB Database项目地址: https://gitcode.com/GitHub_Trending/mo/mongo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考