VSCode Remote Container报ENOSPC:设备无剩余空间,求解决方案
解决VSCode Remote Container磁盘占用异常启动失败的问题
我之前也碰到过一模一样的情况,df显示磁盘满了但du统计的根目录大小却小很多,这大多是Docker的Overlay2存储驱动相关的问题,咱们一步步来解决:
1. 先清理Docker的冗余资源
这是最常见的解决方法,Docker会积累很多未使用的镜像、容器、卷和缓存,直接用官方的清理命令:
docker system prune -a
这个命令会删除所有未被任何容器使用的镜像、停止的容器、无用的卷和网络,执行前确认你不需要这些资源就行。如果想先看看具体哪里占用了空间,可以先运行:
docker system df # 查看Docker各组件的空间占用情况 docker images # 列出所有镜像 docker ps -a # 列出所有容器(包括已停止的) docker volume ls # 列出所有卷
如果有明确不需要的资源,也可以手动删除,比如删除某个镜像:docker rmi <image-id>,删除停止的容器:docker rm <container-id>。
2. 排查容器内的「幽灵文件」
这种情况是文件已经被删除,但还被容器内的某个进程占用,du统计不到但df会算进已用空间里。你可以:
- 先尝试进入容器(如果还能进去的话):
docker exec -it <你的容器ID> /bin/bash
- 然后找出那些被删除但仍被占用的文件:
lsof | grep deleted
找到对应的进程后,重启这个进程(或者直接重启容器),这些被占用的文件就会被真正释放,磁盘空间就能回来了。
3. 检查Docker存储目录的磁盘空间
默认Docker的所有数据都存在/var/lib/docker目录下,你先看看这个目录所在的磁盘是不是真的满了:
df -h /var/lib/docker
如果确实是磁盘本身空间不足,有两个办法:
- 扩容磁盘:根据你用的系统(比如Ubuntu、CentOS)或者云服务器的操作手册,对挂载
/var/lib/docker的磁盘进行扩容。 - 迁移Docker存储目录:把Docker数据迁移到更大的磁盘上:
- 先停止Docker服务:
sudo systemctl stop docker - 把原存储目录复制到新位置(比如
/mnt/big-disk/docker):sudo rsync -aX /var/lib/docker/ /mnt/big-disk/docker/ - 修改Docker配置文件
/etc/docker/daemon.json(如果没有就新建一个),添加存储目录的配置:{ "data-root": "/mnt/big-disk/docker" } - 启动Docker服务:
sudo systemctl start docker - 确认Docker正常运行后,再删除原目录:
sudo rm -rf /var/lib/docker
- 先停止Docker服务:
4. 针对VSCode Remote Container的额外清理
VSCode的远程服务目录可能积累了大量旧日志和冗余文件,你可以尝试清理:
- 进入容器后,删除
/home/vscode/.vscode-server下的旧版本目录(比如除了当前报错里的9833dd88之外的其他目录),或者直接删除整个.vscode-server目录:
rm -rf /home/vscode/.vscode-server
然后重新启动VSCode的远程容器,它会自动重新部署远程服务文件,只是会丢失一些本地的临时配置,一般不影响使用。
内容的提问来源于stack exchange,提问作者user9614249
相关产品推荐
相关产品推荐

