Loading... # CentOS升级后Docker服务无法启动 > 今天 dnf update -y 升级了下服务器,结果docker就死了。😂🤣 ## 一、问题排查(可忽略) 重启服务器运行docker服务,无法启动; ```bash systemctl start docker [11:12:32] Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. ``` 于是 运行 `systemctl status docker.service` 查看: ```bash root@dwtowen: /var/lib # systemctl status docker.service [11:25:24] ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Fri 2022-09-02 11:18:46 CST; 7min ago Docs: https://docs.docker.com Process: 1459 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE) Main PID: 1459 (code=exited, status=1/FAILURE) Sep 02 11:18:46 dwtowen systemd[1]: docker.service: Service RestartSec=2s expired, scheduling restart. Sep 02 11:18:46 dwtowen systemd[1]: docker.service: Scheduled restart job, restart counter is at 3. Sep 02 11:18:46 dwtowen systemd[1]: Stopped Docker Application Container Engine. Sep 02 11:18:46 dwtowen systemd[1]: docker.service: Start request repeated too quickly. Sep 02 11:18:46 dwtowen systemd[1]: docker.service: Failed with result 'exit-code'. Sep 02 11:18:46 dwtowen systemd[1]: Failed to start Docker Application Container Engine. ``` 运行 `journalctl -xe` 查看: ```bash root@dwtowen: /var/lib # journalctl -xe [11:26:00] -- The unit user@991.service has successfully entered the 'dead' state. Sep 02 11:26:12 dwtowen systemd[1]: Stopped User Manager for UID 991. -- Subject: Unit user@991.service has finished shutting down -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- Unit user@991.service has finished shutting down. Sep 02 11:26:12 dwtowen systemd[1]: Stopping User runtime directory /run/user/991... -- Subject: Unit user-runtime-dir@991.service has begun shutting down -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- Unit user-runtime-dir@991.service has begun shutting down. Sep 02 11:26:12 dwtowen systemd[1]: run-user-991.mount: Succeeded. -- Subject: Unit succeeded -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- The unit run-user-991.mount has successfully entered the 'dead' state. Sep 02 11:26:12 dwtowen systemd[1]: user-runtime-dir@991.service: Succeeded. -- Subject: Unit succeeded -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- The unit user-runtime-dir@991.service has successfully entered the 'dead' state. Sep 02 11:26:12 dwtowen systemd[1]: Stopped User runtime directory /run/user/991. -- Subject: Unit user-runtime-dir@991.service has finished shutting down -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- Unit user-runtime-dir@991.service has finished shutting down. Sep 02 11:26:12 dwtowen systemd[1]: Removed slice User Slice of UID 991. -- Subject: Unit user-991.slice has finished shutting down -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- Unit user-991.slice has finished shutting down. lines 4424-4460/4460 (END) ``` 经过分析,怀疑是CentOS8内核太老,导致新版的docker服务无法启动。 ## 二、解决办法 查看内容版本 ```bash uname -a ``` 我的 CentOS8 内核版本是 4.x…… 如下 ```bash # uname -a [12:10:17] Linux dwtowen 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux ``` ### 1、升级内核 **启用elrepo仓库** ```bash rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org ``` **访问如下地址,找到对应系统的ELRepo** ```bash http://elrepo.org/tiki/HomePage ```  如我的CentOS8,安装 **ELRepo for RHEL-8** ```bash yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm ``` **安装最新版内核** ```bash yum --enablerepo=elrepo-kernel install kernel-ml ``` 一般新版内核安装完成后,就会自动应用上新版内核了。 ### 2、重启服务器 ```bash reboot ``` 正常来说,重启后 docker就自动启动了。 ## 三、补充 ### 查看内核 **查看已安装的内核** ```bash rpm -qa kernel ``` 输出如下: ```bash root@dwtowen: ~ # rpm -qa kernel [13:00:21] kernel-4.18.0-373.el8.x86_64 kernel-4.18.0-408.el8.x86_64 kernel-4.18.0-394.el8.x86_64 ``` **查看正在运行的内核版本** 以下三个就能查看 ```bash uname -r uname -a uname -mrs ``` 输出如下 ```bash root@dwtowen: ~ # uname -r [14:20:16] 5.19.6-1.el8.elrepo.x86_64 root@dwtowen: ~ # uname -a [14:20:17] Linux dwtowen 5.19.6-1.el8.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Aug 29 11:19:17 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux root@dwtowen: ~ # uname -mrs [14:20:20] Linux 5.19.6-1.el8.elrepo.x86_64 x86_64 ``` ### 查看docker运行情况 ```bash systemctl status docker.service ``` 输出如下,可以看到docker已经跑起来。  ## 四、如果内核没有换需要自己换一下 ```bash grub2-set-default 0 ``` 运行上边的命令,内核就切换为最新的了。 **重启服务器** ```bash reboot ``` **删除内核可参考这篇文章** <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://blog.dwtowen.com/archives/135/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.zfgo720.com/Scripts/assets/img/sj/6.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">CentOS 更新提示 boot 空间不足</p> <div class="inster-summary text-muted"> CentOS 更新提示 boot 空间不足yum update 更新失败,报错如下:Transaction che... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> End Thanks!😁♐♐ 最后修改:2022 年 09 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏