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 清理了内存

重启电脑恢复

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐