自学内容网 自学内容网

在centos7.9启动docker 18.09.9报错 error initializing graphdriver: overlay2

一、问题

        在centos7.9启动docker 18.09.9报错:Error starting daemon: error initializing graphdriver: overlay2: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior. Reformat the filesystem with ftype=1 to enable d_type support. Backing filesystems without d_type support are not supported.

二、解决方案

        在CentOS 7.9上启动Docker 18.09.9时遇到的错误提示表明,Docker的overlay2存储驱动需要XFS文件系统支持`d_type`功能。`d_type`是XFS文件系统的一个特性,它允许文件系统直接报告目录项的类型(比如普通文件、目录等),这对于Docker这样的容器运行时来说是很重要的。

        如果您的XFS文件系统没有使用`ftype=1`选项格式化,那么您将看到上述错误。解决这个问题通常有两种方法:

方法一:重新格式化根文件系统(不推荐用于生产环境)

        这涉及到数据备份、重新格式化以及恢复数据,风险较大,尤其是对于生产环境。步骤如下:

        1. 备份所有重要数据。

        2. 使用带有`ftype=1`选项的`mkfs.xfs`命令来重新格式化磁盘。

        3. 恢复数据。

        4. 重启Docker服务。

**注意**:此操作会导致数据丢失,请确保已经做好了完整的数据备份,并且清楚了解该过程的所有风险。

方法二:挂载一个新的XFS分区或使用其他支持`d_type`的文件系统

        这个方法相对安全,适合大多数情况。您可以创建一个新的分区或者使用现有的分区,并将其格式化为XFS并启用`d_type`支持,然后更改Docker的数据根目录到新位置。步骤如下:

        1. 创建一个新的分区(如果需要)。

        2. 使用`mkfs.xfs -n ftype=1 /dev/your_partition`命令格式化新的分区。

        3. 编辑Docker配置文件(通常是`/etc/docker/daemon.json`),添加或修改`"data-root": "/path/to/new/partition"`以指向新的分区。

        4. 确保新的路径存在并且Docker有权限访问。

        5. 重启Docker服务。

例如,如果您创建了一个新的XFS分区位于`/dev/sdb1`,您可能会这样做:

```bash

# 格式化新分区
sudo mkfs.xfs -n ftype=1 /dev/sdb1

# 创建挂载点
sudo mkdir /mnt/docker-data

# 将新分区挂载到指定位置
sudo mount /dev/sdb1 /mnt/docker-data

# 更新/etc/fstab以便开机自动挂载
echo '/dev/sdb1 /mnt/docker-data xfs defaults 0 0' | sudo tee -a /etc/fstab

# 更新Docker配置
echo '{ "data-root": "/mnt/docker-data" }' | sudo tee /etc/docker/daemon.json

# 重启Docker服务
sudo systemctl restart docker

```

        请根据实际情况调整命令中的设备名称和挂载点路径。完成这些步骤后,应该可以正常启动Docker而不再出现与`d_type`相关的错误。


原文地址:https://blog.csdn.net/u013930899/article/details/142720534

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!