某个清晨来到公司,突然发现MySQL,redis一直Connection TimedOut,打开Navicat连接MySQL连接不上,无法打开Portainer(docker可视化操作页面);远程连接服务器发现docker挂掉了,使用systemctl start docker无法启动,使用dockerd启动查看报错信息。
1、error initializing graphdriver: loopback attach failed(第一个错误信息)
错误信息:
ERRO[2022-04-20T10:46:43.988072049+08:00] Error opening loopback device: open /dev/loop0: no such device or address
ERRO[2022-04-20T10:46:43.988117534+08:00] [graphdriver] prior storage driver devicemapper failed: loopback attach failed
- 通过百度查找到相关解决方案都是在 /dev 路劲下新建 loop$num等文件
- 以上图修改存储驱动等方式解决无法解决上述错误;
- 手动添加使用以下命令控制回路设备的回路模块后:
insmod /lib/modules/3.10.0-327.36.2.el7.x86_64/kernel/drivers/block/loop.ko
复制代码
/lib/modules/路径后根据你本机的内核版本进入对应内核版本文件夹即可。
2、 Error running deviceCreate (CreatePool) dm_task_run failed
错误信息:
[graphdriver] prior storage driver "devicemapper" failed: devicemapper: Error running deviceCreate (CreatePool) dm_task_run failed
复制代码
- 可能是因为没有足够的空间磁盘(并不是):
- 使用 dockerd -D –storage-driver=overlay指定存储驱动的方式来进行修复,没有用(试过了官网给出的所有选项)
3、解决方式:
官网[:](dockerd |Docker 文档)
再次翻看文档时发现:
- 查看内核版本:
uname -sr
发现版本3.* - 升级内核:
#导入该源的秘钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#启用该源仓库
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
#查看有哪些内核版本可供安装
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#版本选择
#安装的长期稳定版本,稳定可靠
yum --enablerepo=elrepo-kernel install kernel-lt -y
#安装的是主线版本,该版本比较激进,慎重选择
yum --enablerepo=elrepo-kernel install kernel-ml -y
复制代码
- 设置 GRUB 默认的内核版本:
GRUB 初始化的第一个内核将作为默认内核,记得查看你想使用的内核排序
# vim /etc/default/grub 设置 GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
#这里的saved改为0即可,重启后,默认就是你上次所选的版本了。
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
命令行执行:grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码
- 重启机器,再次使用 dockerd 启动docker测试是否可以正常启动;完美运行,停止使用
systemctl start docker
启动即可