Docker无法启动 error initializing graphdriver: driver not supported

2018.08.23 14:37 2555浏览

启动信息

[root@localhost ~]# 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.

启动详情

8月 31 01:47:25 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
-- Subject: Unit docker.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker.service has begun starting up.
8月 31 01:47:25 localhost.localdomain dockerd[2390]: time="2018-08-31T01:47:25.197015872+08:00" level=info msg="libcontainerd: new containerd process, pid: 2393"
8月 31 01:47:26 localhost.localdomain dockerd[2390]: time="2018-08-31T01:47:26.204103195+08:00" level=error msg="[graphdriver] prior storage driver overlay2 failed: driver not supported"
8月 31 01:47:26 localhost.localdomain dockerd[2390]: Error starting daemon: error initializing graphdriver: driver not supported
8月 31 01:47:26 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
8月 31 01:47:26 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.

错误原因:error initializing graphdriver: driver not supported
解决办法:在 /etc/docker 目录下创建daemon.json文件,并且加入以下配置

touch daemon.json
vi daemon.json
{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

再次启动

systemctl start docker

问题解决

### 解决方案 Docker 守护进程无法启动并报告 `error initializing graphdriver` 错误通常是由于存储驱动程序配置不正确或底层文件系统存在问题引起的。以下是可能的原因分析以及解决方案: #### 原因分析 1. **devicemapper 配置冲突** 如果使用 devicemapper 存储驱动程序,则可能会因为 thin-pool 数据块已被占用而导致初始化失败[^1]。 2. **磁盘分区问题** 当前使用的 LVM 薄层卷(thin pool)可能存在损坏或者未正确分配空间,这会阻止 Docker 初始化其图形驱动程序。 3. **权限不足或其他服务干扰** 可能存在其他服务抢占了 Docker 所需资源的情况,比如 firewalld 在特定情况下会影响网络规则设置[^2]。 --- #### 解决方法 ##### 方法一:清理 devicemapper 的 thin-pool 并重新创建 如果问题是由于 thin-pool 已被占用引起,可以尝试删除现有池并重建它。 ```bash sudo lvremove /dev/mapper/docker-thinpool sudo vgextend docker-vg $(df | grep '/var/lib/docker' | awk '{print $1}') sudo lvs -o +devices ``` 然后编辑 `/etc/sysconfig/docker-storage-setup` 文件来指定新的 thin-pool 参数: ```ini DEVS=/dev/sdb VG=docker-vg DATA_SIZE=10G METADATA_SIZE=2G THINPOOL_NAME=docker-thinpool ``` 保存更改后运行以下命令完成重置过程: ```bash sudo service docker stop sudo rm -rf /var/lib/docker/* sudo systemctl restart docker ``` ##### 方法二:切换到 overlay2 存储驱动 overlay2 是一种更高效且兼容性更好的存储驱动器,在大多数现代 Linux 发行版上推荐使用此选项代替默认的 devicemapper。 修改 `/etc/docker/daemon.json` 添加如下内容: ```json { "storage-driver": "overlay2" } ``` 接着重启 Docker 服务使其生效: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` ##### 方法三:检查 SELinux 设置 有时 SELinux 策略也会阻碍正常操作流程。临时禁用 SELinux 测试效果如何: ```bash setenforce 0 ``` 永久关闭则需要调整配置文件 `/etc/selinux/config` 中的参数为 `SELINUX=permissive` 或者完全关闭状态即 `disabled`。 ##### 方法四:更新内核版本 较旧的操作系统内核可能导致某些功能不可用从而引发异常行为。升级至最新稳定发行版通常能够修复这类潜在缺陷。 --- ### 总结 通过以上几种方式应该可以有效处理掉大部分关于 “failed to start daemon: error initializing graphdriver” 类型的问题。具体采取哪种措施取决于实际环境状况和个人偏好设定等因素影响下的最佳实践考量结果。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值