You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Docker根目录后Docker Engine无法启动的问题求助

问题描述

在CentOS 7系统中新建分区后,尝试将Docker根目录从/var/lib/docker迁移到/data/docker,操作如下:

  1. 修改docker.service文件,更新ExecStart配置:

ExecStart=/usr/bin/dockerd -g /data/docker/ -H fd:// --containerd=/run/containerd/containerd.sock

  1. 将/var/lib/docker下的数据复制到/data/docker
  2. 执行systemctl daemon-reload和systemctl start docker

但Docker服务启动失败,报错信息:

Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Process: 16925 ExecStart=/usr/bin/dockerd -g /data/docker/ -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE) Main PID: 16925 (code=exited, status=1/FAILURE)
Jun 29 23:26:37 linux.local systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Jun 29 23:26:37 linux.local systemd[1]: Failed to start Docker Application Container Engine.
Jun 29 23:26:37 linux.local systemd[1]: Unit docker.service entered failed state.
Jun 29 23:26:37 linux.local systemd[1]: docker.service failed. Warning: docker.service changed on disk. Run 'systemctl daemon-reload'to reload units.

环境信息:

  • 系统版本:CentOS Linux 7 (Core),内核3.10.0-1160.90.1.el7.x86_64
  • Docker版本:Docker Engine - Community 24.0.2,containerd 1.6.21
解决步骤

1. 修复目录权限与SELinux上下文

Docker需要对/data/docker拥有完整读写权限,且SELinux上下文需匹配:

  • 调整目录权限:
chown -R root:root /data/docker
chmod -R 700 /data/docker
  • 修复SELinux上下文(CentOS 7默认开启SELinux,这是高频问题点):
restorecon -Rv /data/docker

可临时关闭SELinux验证是否为此问题:

setenforce 0

关闭后若能启动,说明是SELinux限制,上述restorecon命令可永久修复。

2. 替换过时的-g参数

Docker 17.06版本后官方推荐使用--data-root替代-g(-g为旧版别名,部分新版本存在兼容性问题),修改docker.service的ExecStart为:

ExecStart=/usr/bin/dockerd --data-root /data/docker -H fd:// --containerd=/run/containerd/containerd.sock

修改后重新重载并启动:

systemctl daemon-reload
systemctl start docker

3. 查看Docker详细启动日志

通过journalctl获取实时启动日志,定位具体失败原因:

journalctl -u docker.service -f

日志会明确提示错误类型,比如权限拒绝、文件损坏、挂载只读等,可针对性处理。

4. 确认数据复制完整性

确保原目录所有文件(含隐藏文件、权限属性)完整复制到新目录,推荐用rsync:

rsync -av /var/lib/docker/ /data/docker/

避免使用cp命令可能遗漏的特殊文件或权限配置。

5. 验证systemd配置合法性

检查修改后的docker.service是否存在语法错误:

systemd-analyze verify docker.service

若有配置错误会直接提示,修正后再执行重载启动操作。

6. 检查分区挂载状态

确认/data所在分区挂载正常,非只读状态:

df -h
mount | grep /data

若为只读挂载,重新挂载为读写模式:

mount -o remount,rw /data

同时检查/etc/fstab中的挂载配置,确保开机自动挂载为读写模式。


内容的提问来源于stack exchange,提问作者TITANIXX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:29:52