docker在centos7启动出现错误

本文记录了一次Docker服务启动失败的问题及解决过程。启动失败的原因在于服务尝试启动过于频繁,通过查看状态发现主进程退出并返回错误码。最终通过编辑配置文件中的存储驱动为devicemapper解决了该问题。

[root@izbp1iwt8d75s3t770dd1zz opt]# systemctl start docker
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[root@izbp1iwt8d75s3t770dd1zz opt]# systemctl start docker
Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details.
To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again.
[root@izbp1iwt8d75s3t770dd1zz opt]# ^C
[root@izbp1iwt8d75s3t770dd1zz opt]# systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Wed 2018-07-25 10:41:35 CST; 43s ago
     Docs: https://docs.docker.com
  Process: 9775 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE)
 Main PID: 9775 (code=exited, status=1/FAILURE)

Jul 25 10:41:35 izbp1iwt8d75s3t770dd1zz systemd[1]: Unit docker.service entered failed state.
Jul 25 10:41:35 izbp1iwt8d75s3t770dd1zz systemd[1]: docker.service failed.
Jul 25 10:41:35 izbp1iwt8d75s3t770dd1zz systemd[1]: docker.service holdoff time over, scheduling restart.
Jul 25 10:41:35 izbp1iwt8d75s3t770dd1zz systemd[1]: start request repeated too quickly for docker.service
Jul 25 10:41:35 izbp1iwt8d75s3t770dd1zz systemd[1]: Failed to start Docker Application Container Engine.
Jul 25 10:41:35 izbp1iwt8d75s3t770dd1zz systemd[1]: Unit docker.service entered failed state.
Jul 25 10:41:35 izbp1iwt8d75s3t770dd1zz systemd[1]: docker.service failed.
Jul 25 10:42:01 izbp1iwt8d75s3t770dd1zz systemd[1]: start request repeated too quickly for docker.service
Jul 25 10:42:01 izbp1iwt8d75s3t770dd1zz systemd[1]: Failed to start Docker Application Container Engine.
Jul 25 10:42:01 izbp1iwt8d75s3t770dd1zz systemd[1]: docker.service faile

解决方案

在/etc/docker/daemon.json里面编辑{"storage-driver":"devicemapper"}

### 问题分析 在 CentOS 9 上安装 Docker 时遇到启动失败的问题,常见的错误信息是: ``` Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. ``` 此类问题通常与配置错误、端口冲突、存储驱动问题或依赖组件缺失有关。以下是详细的排查和解决方法。 --- ### 排查步骤 #### 1. 查看服务状态 使用以下命令查看 Docker 服务的状态: ```bash systemctl status docker.service ``` 该命令会显示服务的运行状态以及最近的错误信息,有助于初步判断问题原因。 #### 2. 查看日志信息 通过 `journalctl` 查看详细的日志信息: ```bash journalctl -xe ``` 日志中通常会记录具体的错误原因,例如无法加载驱动、配置文件错误等。 #### 3. 检查配置文件 Docker 的主配置文件位于 `/etc/docker/daemon.json`。如果该文件配置错误,可能导致服务启动失败。可以尝试暂时备份并删除该文件,然后重启服务: ```bash mv /etc/docker/daemon.json /etc/docker/daemon.json.bak systemctl daemon-reload systemctl restart docker ``` #### 4. 检查端口冲突 Docker 默认使用 `2375`(非加密)和 `2376`(加密)端口。如果这些端口被其他服务占用,可能导致启动失败。可以使用以下命令检查端口占用情况: ```bash netstat -tuln | grep 237 ``` 如果发现端口被占用,可以终止占用进程或修改 Docker 的默认端口配置。 #### 5. 检查存储驱动 Docker 默认使用 `overlay2` 存储驱动。如果系统不支持该驱动,可能需要更换为 `btrfs` 或 `zfs`。可以通过修改 `/etc/docker/daemon.json` 文件来更改存储驱动: ```json { "storage-driver": "btrfs" } ``` 保存后重启 Docker 服务: ```bash systemctl restart docker ``` #### 6. 检查 SELinux 和防火墙 SELinux 或防火墙可能会阻止 Docker 启动。可以临时禁用 SELinux 和防火墙进行测试: ```bash setenforce 0 systemctl stop firewalld ``` 如果问题解决,可以调整 SELinux 策略或防火墙规则以允许 Docker 运行。 #### 7. 重新安装 Docker 如果以上方法均无效,可以尝试卸载并重新安装 Docker。首先卸载现有版本: ```bash yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine ``` 然后安装最新版本的 Docker CE 和相关组件: ```bash yum install docker-ce docker-ce-cli containerd.io ``` 安装完成后启动服务: ```bash systemctl start docker ``` #### 8. 检查系统兼容性 确保 CentOS 9 的内核版本支持 Docker。可以使用以下命令检查内核版本: ```bash uname -r ``` Docker 要求内核版本至少为 `3.10`。如果内核版本过低,建议升级内核。 --- ### 示例代码 #### 查看 Docker 服务状态 ```bash systemctl status docker ``` #### 查看日志信息 ```bash journalctl -xe ``` #### 修改 Docker 配置文件 ```json { "storage-driver": "btrfs" } ``` #### 卸载 Docker ```bash yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine ``` #### 安装最新版本的 Docker ```bash yum install docker-ce docker-ce-cli containerd.io ``` --- ### 相关问题 1. 如何检查 Docker 服务的日志信息? 2. Docker 启动失败时,如何判断是否是端口冲突导致的? 3. 如何更改 Docker 的存储驱动? 4. 如何临时禁用 SELinux 和防火墙以测试 Docker 是否能启动? 5. 如何在 CentOS 9 上卸载并重新安装 Docker
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值