1. 背景
在使用docker build -t 命令构建镜像后,发现ubuntu系统提示内存资源不足,没管直接操作重启,结果卡在了启动页里,进不了图形界面。尝试ctrl+F1~F6,进入后一直闪屏,也无法正常输入。文档记录了如何最终定位并解决这个问题。
2. 解决过程
2.1 重启后提示nvidia驱动异常?
在操作重启后,卡在了启动页里,并提示Nvidia驱动异常?这个问题一度带偏了我,以为是驱动问题。如下图,类似这种:
对应错误记录:
Failed to start nvidia-powerd service
faied to start NVIDIA persistence Daemon
尝试进入到tty模式,发现一个问题:进入后一直闪屏,导致没发正常输入密码,,,
2.2 不用tty模式,如何找一个终端执行?
尝试再次重启电脑,按Esc进入到recovery mode,选择第二个recovery mode对应的内核进入,这里会提供联网配置、root终端的基本功能,我们按照如下顺序进行:
1. 选择"Network"进入,此步骤可能要多次选择,可以完成一个外网的联网。
2. 联网后,选择"Root"进入,并输入root密码(建议和你用户密码保持一致,,,),然后就得到了一个连外网的终端。
3. ifconfig可以看到外网的ip地址,成功。
2.3 最终定位docker占满系统盘
在上一轮进入到root终端里,用 df -h 观察磁盘情况,发现了 /dev/nvme0n1p2 占用100% 的现象,这个对应着根目录 "/",怀疑是系统盘满了导致系统启动时无法正常加载nvidia显卡驱动。
于是找过很多文档,这里记录一下:
引用一下这位老哥的文档:linux /dev/nvme0n1p2 full-掘金
知道了占满,就要知道什么东西占满了,这里用了列举法,将每个文件对应的大小都打印
sudo du -h / | grep '[0-9\.]\+G'
发现 /var/lib/docker/overlay2 下有很多文件,每个文件都占用了几个G,总共占用了90多G(系统盘200多G)。
查找如何清理 /var/lib/docker/overlay2 的方法,得到如下命令:
docker system prune -a
会清理所有无用镜像、缓存、挂载数据。清理之后,发现终于多出来90多G空间。于是,尝试重启系统。恢复~,成功。
3. 问题原因及解决操作
原因:docker制作导致/var/lib/docker/overlay2 路径占满了系统盘,导致卡在启动页
解决操作:
df -h 查看 /dev/nvme0n1p2 占用100%
然后 sudo du -h / | grep '[0-9\.]\+G' 统计发现 /var/lib/docker/overlay2 占用了大部分空间
最后 docker system prune -a 清理了内存
重启电脑恢复