Docker之xfs文件系统下安装报错解决方案

2024-05-27 09:04

本文主要是介绍Docker之xfs文件系统下安装报错解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、需求说明

  centos系统下安装docker最新版的时候,安装成功,启动的时候报错。报错信息“failed to start daemon: error initializing graphdriver: overlay2: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior.”。经过一系列排查发现,原来是centos早起版本安装系统的时候如果选择的xfs文件系统格式,默认是ftype=0,如果安装新版docker要求ftype=1。为了解决docker启动问题,我们需要一块ext4或者xfs的ftype=1的磁盘,此博文以此为例进行介绍如何解决docker启动遇到d_type参数错误问题。博文实验环境如下:

  • 操作系统:centos7.2
  • docker版本:26.0.0
    在这里插入图片描述

二、解决方案

1、查看磁盘xfs信息

  为了确定原因,我们首先检查xfs磁盘的ftype值,docker默认根位置是在/var/lib/docker,我们检查的根分区,可以看到ftype当前是0,不满足要求。

[root@s172 ~]# xfs_info /
在这里插入图片描述

2、确认系统是否支持overlay

  我们需要先确定系统是否添加overlay模块到内核,如下命令如果没有任何输出说明不支持,我们需要执行步骤3。

[root@s172 ~]# lsmod |grep over
overlay 42451 0

3、添加系统内核支持overlay

  如果步骤2没有执行后没有任何输出则需要使用modprobe添加overlay模块到内核中,然后重启系统。

[root@s172 ~]# modprobe overlay

4、添加一块新磁盘

  博主是在虚拟机环境下进行的仿真实验,添加一块磁盘比较方便。因为修改ftype值需要格式化磁盘,如果是物理机环境磁盘空间全部分配了,可以考虑添加一块新硬盘或者从现有的磁盘中进行缩减。很遗憾的是xfs系统只支持扩容,不支持在线缩减。如果需要从xfs系统中缩减出磁盘空间可以参考博文Linux之XFS文件系统LVM环境移除home分区故障磁盘。此博文介绍了使用xfsdump的方式缩减xfs磁盘大小。

[root@s172 ~]# fdisk -l

在这里插入图片描述

5、磁盘分区

  使用新磁盘创建磁盘分区。

[root@s172 ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) print free
Error: /dev/sdb: unrecognised disk label
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mklabel msdos
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? xfs
Start? 1
End? 20G
(parted) print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 20.0GB 20.0GB primary

(parted) quit

6、磁盘格式化时指定ftype=1

  将磁盘分区格式化,格式化的时候指定ftype=1。

[root@s172 ~]# mkfs.xfs -n ftype=1 /dev/sdb1
在这里插入图片描述

7、创建挂载目录

  创建一个挂载目录。

[root@s172 ~]# mkdir -p /docker

8、挂载/docker目录

  将新磁盘挂载到新目录。

[root@s172 ~]# mount /dev/sdb1 /docker

9、查看磁盘xfs参数信息

  挂载后查看/docker分区的xfs参数信息,确定ftpye参数值为1。

[root@s172 ~]# xfs_info /docker/
在这里插入图片描述

10、修改docker的daemon.json配置文件

  docker默认根目录是/var/lib/docker,如果是根分区参数不满足要求基本上不可能进行参数修改。所以我们需要重新制定docker的根目录,创建/etc/docker/daemon.json文件并写入如下内容。

[root@s172 ~]# cat /etc/docker/daemon.json 
{"storage-driver": "overlay2","data-root": "/docker"
}

11、重新启动docker

  完成如上步骤之后再次启动docker发现不再报错,检查docker运行状态为active。至此问题解决。

[root@s172 ~]# systemctl start docker
[root@s172 ~]# systemctl status docker
在这里插入图片描述

12、查看docker信息

[root@s172 ~]# docker info
Client: Docker Engine - Community
Version: 26.0.0
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.13.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.25.0
Path: /usr/libexec/docker/cli-plugins/docker-compose

Name: s172
ID: 210461dd-21f6-4cfa-bd3b-01c40d778237
Docker Root Dir: /docker

三、写在最后

  实际上centos7环境下也可以直接yum安装docker,只是安装的版本比较老旧,只能安装到docker1.13版本。博主是需要通过docker安装milvus单机,安装milvus要求docker版本1.19以上。所以是参照博文Linux之docker安装在线安装docker。博主查找了一些资料,作为笔记记录如下:

  • Docker v17.06 之前版本 CentOS 和 RHEL 生产环境必须使用 devicemapper 驱动的 direct-lvm 模式
  • Docker v17.06 之前版本 CentOS 和 RHEL 生产环境必须使用 devicemapper 驱动的 direct-lvm 模式
  • overlay、devicemapper 存储驱动已在 Docker Engine-Enterprise 18.09中弃用,此后docker版本参数配置文件都是overlay2,如果配置overlay则会报错;
  • overlay、overlay2 底层为 overlayfs 文件系统需要用到 d_type 特性;
  • CentOS7 发行版默认 Kernel 版本为 3.10,可以使用 overlay (Kernel 版本 3.10 支持 overlay),xfs 格式文件系统必须指定 ftype=1 来开启 d_type 特性;
  • 担心xfs系统ftype参数影响的可以考虑ext4。

这篇关于Docker之xfs文件系统下安装报错解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007033

相关文章

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

MySQL索引失效问题及解决方案

《MySQL索引失效问题及解决方案》:本文主要介绍MySQL索引失效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql索引失效一、概要二、常见的导致MpythonySQL索引失效的原因三、如何诊断MySQL索引失效四、如何解决MySQL索引失

Redis中的数据一致性问题以及解决方案

《Redis中的数据一致性问题以及解决方案》:本文主要介绍Redis中的数据一致性问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Redis 数据一致性问题的产生1. 单节点环境的一致性问题2. 网络分区和宕机3. 并发写入导致的脏数据4. 持