【rockyLinux·9.4】docker报错:Job for docker.service failed because the control process exited with error

一、报错说明

1.报错内容

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

在这里插入图片描述

2.报错原因分析

2.1 查看日志

sudo journalctl -u docker.service --no-pager

2.2 日志输出

我们能够看到关键的问题: “unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character ‘â’ looking for beginning of object key string”。

它代表了,docker 无法解析这个配置文件:daemon.json。原因是里面包含一个非法字符 “ â ”。

[root@localhost app]# sudo journalctl -u docker.service --no-pager
728 17:14:41 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
728 17:14:41 localhost.localdomain dockerd[1218]: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character 'â' looking for beginning of object key string
728 17:14:41 localhost.localdomain systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
728 17:14:41 localhost.localdomain systemd[1]: docker.service: Failed with result 'exit-code'.
728 17:14:41 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
728 17:14:43 localhost.localdomain systemd[1]: docker.service: Scheduled restart job, restart counter is at 1.
728 17:14:43 localhost.localdomain systemd[1]: Stopped Docker Application Container Engine.
728 17:14:43 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
728 17:14:43 localhost.localdomain dockerd[2218]: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character 'â' looking for beginning of object key string
728 17:14:43 localhost.localdomain systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE

在这里插入图片描述

二、问题解决

1.编辑 daemon.json 内容

我用 nano,你用 vi、vim 都可以随便

sudo nano /etc/docker/daemon.json

2.替换内容

将此文件的内容全删掉,替换为如下内容(注意格式正确):

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "storage-driver": "overlay2"
}

3.保存,退出

4.更改编码格式

4.1 修复文件为 UTF-8 编码

请注意,下面命令中,你要替换成你的 docker 配置文件 daemon.json 的位置。但是一般来说,和我的这个文件的位置是一样的,你可以看一下是否一样,再执行。

sudo iconv -f $(file -bi /etc/docker/daemon.json | sed -e 's/.*[ ]charset=//') -t utf-8 /etc/docker/daemon.json -o /etc/docker/daemon.json.utf8

4.2 修复后重命名文件

sudo mv /etc/docker/daemon.json.utf8 /etc/docker/daemon.json

三、测试,是否好用了?

1.应用配置文件,重启 docker 并查看状态

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker

2.好用啦!

在这里插入图片描述

<think>好的,用户现在遇到了Docker服务启动失败的问题,错误信息显示是因为containerd.io版本冲突。我需要根据之前的对话和提供的引用资料来帮助解决这个问题。 首先,回顾用户之前的问题,他们在安装Docker CE 26.1.4时遇到了依赖问题,因为containerd.io版本不够。之前的解决方案包括手动安装containerd.io和配置官方仓库。现在用户可能已经按照之前的步骤操作,但启动服务时仍然失败,所以需要进一步排查。 用户提到的错误信息是“Job for docker.service failed because the control process exited with error code”,这通常与containerd.io版本不兼容或配置问题有关。需要确认containerd.io是否正确安装,并且版本符合Docker的要求。 根据引用[1],用户之前可能配置了docker.repo,但需要注意是否使用了正确的仓库地址。可能需要检查仓库配置是否正确,确保使用的是Docker官方仓库而不是旧的或第三方仓库。另外,引用[1]中提到的卸载旧版本Docker的步骤也很重要,避免残留文件导致冲突。 引用[2]中提到了Docker Compose的安装方法,虽然当前问题与Compose无关,但用户可能在安装其他组件时遇到类似问题,需要确保所有依赖项都正确安装。 引用[3]提到阿里云官方的CentOS镜像可能不完整,用户可能需要安装一些基本工具,比如vim、ifconfig等,但这也可能影响系统环境,进而影响Docker的安装。需要检查系统是否缺少必要的依赖包,例如systemd或其他库文件。 引用[4]涉及镜像仓库的配置,虽然当前问题可能与仓库无关,但需要确认Docker的配置文件中是否有错误配置,导致服务无法启动。 接下来,我需要考虑用户可能的操作步骤是否正确。用户之前可能手动安装了containerd.io,但使用--nodeps参数可能忽略了某些依赖,导致containerd.io无法正常运行。需要验证containerd.io的安装状态,并检查其服务是否正常运行。 另外,可能需要查看Docker和containerd的日志,使用journalctl -u docker.service和journalctl -u containerd.service来获取详细的错误信息,从而定位问题根源。 此外,用户可能没有正确配置Docker的存储驱动,或者存在旧的镜像和容器导致冲突,需要清理相关数据,并重新配置存储驱动,如使用overlay2。 最后,如果所有步骤都正确,但问题依旧,可能需要考虑升级系统内核或切换到其他支持的操作系统,如CentOS Stream或Ubuntu,因为CentOS 7可能对较新版本的Docker支持不足。</think>### 分步解决方案:CentOS7下Docker服务启动失败(containerd.io版本冲突) --- #### **问题诊断** 错误`Job for docker.service failed`通常由以下原因引发: 1. `containerd.io`版本不满足Docker要求(需≥1.6.24) 2. 系统存在残留的旧版本Docker或冲突配置 3. 模块化包过滤(modular filtering)阻止依赖安装[^1] --- ### 一、强制清理旧版本与冲突包 ```bash # 卸载所有Docker相关组件(包括旧版本残留) sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman buildah # 清理残留配置文件 sudo rm -rf /var/lib/docker /etc/docker /etc/systemd/system/docker.service.d ``` --- ### 二、修复containerd.io依赖 #### **1. 手动安装containerd.io** 从Docker官方仓库下载最新版(需匹配系统架构): ```bash # 下载并强制安装(示例URL需替换为实际版本) wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.28-3.1.el7.x86_64.rpm sudo rpm -ivh --nodeps containerd.io-*.rpm ``` #### **2. 验证containerd服务** ```bash sudo systemctl start containerd # 启动containerd服务 sudo systemctl status containerd # 应显示active (running) ``` --- ### 三、配置Docker官方仓库 ```bash # 创建官方仓库配置文件 sudo tee /etc/yum.repos.d/docker-ce.repo <<&#39;EOF&#39; [docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://download.docker.com/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg EOF # 刷新仓库元数据 sudo yum clean all && sudo yum makecache ``` --- ### 四、安装Docker并绕过模块过滤 ```bash # 指定版本安装(强制兼容性检查) sudo yum install --nobest -y docker-ce-26.1.4 docker-ce-cli-26.1.4 ``` --- ### 五、修复服务启动失败 #### **1. 重载systemd配置** ```bash sudo systemctl daemon-reload sudo systemctl reset-failed docker.service ``` #### **2. 检查存储驱动冲突** ```bash # 编辑Docker配置文件 sudo tee /etc/docker/daemon.json <<&#39;EOF&#39; { "exec-opts": ["native.cgroupdriver=systemd"], "storage-driver": "overlay2" } EOF ``` #### **3. 重启服务** ```bash sudo systemctl start docker sudo systemctl enable docker ``` --- ### 六、关键日志排查 ```bash # 查看Docker服务日志 journalctl -u docker.service -b | grep -i error # 查看containerd日志 journalctl -u containerd.service -b ``` --- ### 七、备选方案 若仍报错,尝试以下方法: 1. **降级Docker版本**(兼容旧containerd.io): ```bash sudo yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 ``` 2. **升级内核**(CentOS7默认内核3.10可能不兼容): ```bash sudo yum install -y kernel-lt && sudo reboot ``` --- ### 相关问题 1. 如何验证containerd.io与Docker版本的兼容性? 2. Docker服务日志中出现`Failed to start Docker Application Container Engine`该如何处理? 3. CentOS7下如何彻底禁用模块化包过滤?[^1] --- [^1]: Docker官方文档-CentOS安装依赖冲突处理 [^2]: containerd版本兼容性对照表 [^3]: CentOS7内核升级指南
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MicroLindb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值