CentOS7.9配置daemon.json迁移Docker数据目录报data-root无效错误
问题根因
报错信息显示运行的Docker进程为dockerd-current,说明当前CentOS 7.9环境安装的是系统默认源提供的1.13.x老旧版本Docker,该版本不支持data-root配置项。data-root是Docker 17.06及之后版本才引入的参数,老版本Docker指定数据存储目录的配置项为graph,因此配置校验时会直接抛出参数不匹配的错误。
已确认的XFS磁盘ftype=1、数据同步操作均无问题,报错与磁盘格式、数据同步逻辑、SELinux配置、磁盘挂载方式无关。
解决方案
可根据实际需求选择以下任意一种方案修复:
方案1:适配现有老版本Docker(无需升级)
将daemon.json中的data-root参数替换为老版本支持的graph参数即可:
- 确认Docker服务已停止:
systemctl stop docker
- 修改
/etc/docker/daemon.json配置文件,参考内容如下:
{ "graph": "/var/lib/test", "storage-driver": "overlay2" }
- 检查新数据目录权限,确保属主属组与原
/var/lib/docker一致,均为root:root。 - 重载系统服务配置并启动Docker:
systemctl daemon-reload systemctl start docker
- 执行以下命令验证配置生效:
docker info | grep "Docker Root Dir"
输出路径为/var/lib/test即代表配置成功。
方案2:升级至官方维护的Docker CE版本(推荐)
CentOS默认源携带的1.13版本Docker已停止维护多年,存在大量安全漏洞与兼容性问题,建议升级到官方持续维护的Docker CE版本,升级后可原生支持data-root参数:
- 停止运行中的老版本Docker服务:
systemctl stop docker
- 卸载系统自带的老旧Docker相关组件:
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux dockerd-current
- 安装Docker CE依赖组件:
yum install -y yum-utils device-mapper-persistent-data lvm2
- 配置Docker CE稳定版软件源,安装最新版Docker CE及关联组件:
yum install -y docker-ce docker-ce-cli containerd.io
- 确认
/etc/docker/daemon.json中的data-root配置正确,重载系统服务配置后启动Docker并设置开机自启:
systemctl daemon-reload systemctl start docker systemctl enable docker
- 执行
docker info | grep "Docker Root Dir"验证数据目录配置生效即可。
注意事项
- 已完成的新旧数据目录rsync同步操作有效,无需重复执行,仅需保证新目录权限正确即可。
- 如果启动时遇到SELinux拦截报错,可先执行
setenforce 0临时关闭SELinux测试,确认是SELinux策略问题后,执行以下命令给新数据目录打对应SELinux标签即可永久修复:
semanage fcontext -a -t container_var_lib_t "/var/lib/test(/.*)?" restorecon -Rv /var/lib/test
- 已验证的XFS分区
ftype=1符合overlay2存储驱动的官方要求,无需调整磁盘格式。
内容的提问来源于stack exchange,提问作者searchbruh
相关产品推荐
相关产品推荐

