Docker容器消耗资源过多导致宿主机死机解决方案
2024年11月1日约 424 字大约 1 分钟
问题情况
打开了一个 Docker 容器,该容器消耗系统资源超过所拥有的系统资源本身,导致机器卡死。该容器设置了always
启动策略,每次重启都会自动启动容器。无法连接到 SSH,也无法打开 Web 管理面板,只能通过云服务商的 VNC 应急连接。
解决方案
将 Docker 服务完全停止,然后禁用或者删除出现问题的 Dockers 容器,最后重启 Docker 服务恢复业务。
具体操作
- 连接到 VNC,输入账号密码连接设备(如果 SSH 仍然能正常工作的情况可以使用 SSH 直接登录)。
- 停止并停用 Docker 服务。
systemctl stop docker
systemctl disable docker
- 重启服务器以彻底的关闭 Docker 服务,此时容器已经全部停止运行。
- 转到
/var/lib/docker/containers/
目录,查看目录。 - 逐一找到有问题的容器(开启哪个容器导致的死机就找哪个容器),可以进入目录查看
config.v2.json
或者hostconfig.json
来判断容器。 - 停用或删除容器
- 如果删除容器,请返回容器的上一级目录,使用万恶的
rm -rf [容器id]
删除容器。 - 如果停用容器,需要打开
hostconfig.json
,并将RestartPolicy
的name
改为never
。然后打开config.v2.json
,将State
的Running
参数改为False
。
- 如果删除容器,请返回容器的上一级目录,使用万恶的
- 启用并启动 Docker 服务。
systemctl enable docker
systemctl start docker
- 检查 Docker 状态,确保 Docker 已经正常运行。
systemctl status docker
忠告!!!
操作服务器环境之前要先打快照!!!