Docker 修改存储位置的步骤(data-root 迁移完整指南)

 更新时间:2026年03月04日 14:43:39   作者:赴前尘  
本文详细介绍了如何在Linux+systemd环境下,将Docker的默认数据目录(data-root)迁移到其他磁盘空间充足的位置,包括迁移前的准备工作、具体步骤、配置修改、启动和验证等,以及常见问题的排查方法,感兴趣的朋友跟随小编一起看看吧

Docker 修改存储位置(data-root 迁移完整指南)

适用于 Linux + systemd 环境(CentOS / RHEL / Ubuntu / Debian 等)

一、迁移背景

Docker 默认数据目录:

/var/lib/docker

当系统盘空间不足时,通常需要将其迁移至数据盘,例如:

/mnt/data/docker-data

二、迁移前检查(强烈建议)

1️⃣ 查看当前 Docker 数据目录

docker info | grep "Docker Root Dir"

默认一般为:

Docker Root Dir: /var/lib/docker

2️⃣ 查看磁盘使用情况

df -h
du -sh /var/lib/docker

确认目标磁盘空间足够。

三、正式迁移步骤

步骤 1:停止 Docker 服务

⚠️ 必须先停止,否则可能造成数据损坏。

sudo systemctl stop docker

确认已停止:

sudo systemctl status docker

步骤 2:创建新数据目录

例如迁移到:

/mnt/data/docker-data

创建目录:

sudo mkdir -p /mnt/data/docker-data

设置权限(推荐):

sudo chown -R root:root /mnt/data/docker-data
sudo chmod 711 /mnt/data/docker-data

步骤 3:迁移数据(推荐使用 rsync)

sudo rsync -aP /var/lib/docker/ /mnt/data/docker-data/

参数说明:

  • -a 保留权限、软链接、时间戳
  • -P 显示进度 + 支持断点续传

⚠️ 注意:路径末尾 / 很重要。

等待数据复制完成。

步骤 4:修改 Docker 配置

编辑或创建配置文件:

sudo vim /etc/docker/daemon.json

添加或修改为:

{
  "data-root": "/mnt/data/docker-data"
}

⚠️ 如果文件中已有其他配置,确保 JSON 格式正确,例如:

{
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"],
  "data-root": "/mnt/data/docker-data"
}

可以使用以下命令验证 JSON 格式:

cat /etc/docker/daemon.json | python -m json.tool

步骤 5:重新加载并启动 Docker

sudo systemctl daemon-reload
sudo systemctl start docker

检查状态:

sudo systemctl status docker

步骤 6:验证是否迁移成功

docker info | grep "Docker Root Dir"

确认输出为:

Docker Root Dir: /mnt/data/docker-data

再查看容器是否正常:

docker ps -a

步骤 7:确认无误后删除旧目录(可选)

⚠️ 确认 Docker 正常运行后再执行。

sudo rm -rf /var/lib/docker

四、常见问题排查

1️⃣ Docker 启动失败

查看日志:

journalctl -u docker -xe

常见原因:

  • JSON 格式错误
  • 目标目录权限不对
  • SELinux 限制(CentOS)

若开启 SELinux,可执行:

sudo chcon -Rt svirt_sandbox_file_t /mnt/data/docker-data

2️⃣ 容器丢失

如果容器不见了:

  • 检查 data-root 是否写错
  • 检查 rsync 是否完整复制

到此这篇关于Docker 修改存储位置(data-root 迁移完整指南)的文章就介绍到这了,更多相关docker 修改存储位置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker部署vue项目的实现步骤

    docker部署vue项目的实现步骤

    本文主要介绍了docker部署vue项目的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • docker查询日志并输出到文件的方法

    docker查询日志并输出到文件的方法

    docker的运行的时候我们喜欢采用 -d 的命令来启动docker容器,这就导致了一个问题,无法直接看到docker运行日志,只能去后台进去找到日志文件查看,下面这篇文章主要给大家介绍了关于docker查询日志并输出到文件的相关资料,需要的朋友可以参考下
    2023-06-06
  • nginx在docker容器中自动生成配置文件

    nginx在docker容器中自动生成配置文件

    这篇文章主要介绍了nginx在docker容器中自动生成配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • docker拉取镜像查看版本的方法步骤

    docker拉取镜像查看版本的方法步骤

    这篇文章主要介绍了docker拉取镜像查看版本的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 清理或删除docker无用镜像的操作方法

    清理或删除docker无用镜像的操作方法

    这篇文章主要介绍了清理或删除docker无用镜像的操作方法,清除docker无用镜像首先查看docker占用的资源,只删除那些未被使用的资源,文中给大家补充介绍了docker 批量删除无用的容器或镜像的方法,感兴趣的朋友一起看看吧
    2023-01-01
  • docker删除镜像的实现方式详解

    docker删除镜像的实现方式详解

    这篇文章主要为大家介绍了docker删除镜像的实现方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 如何使用docker compose 部署ELK 8.X及监控

    如何使用docker compose 部署ELK 8.X及监控

    这篇文章主要介绍了如何使用docker compose 部署ELK 8.X及监控,包括前置环境配置及docker compose启动/停止的命令,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • Docker安装Elasticsearch 8.x的实现示例

    Docker安装Elasticsearch 8.x的实现示例

    本文主要介绍了Docker安装Elasticsearch8.x,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • 详解使用Docker搭建Java Web运行环境

    详解使用Docker搭建Java Web运行环境

    本篇文章主要介绍了使用Docker搭建Java Web运行环境,现在分享给大家,也给大家做个参考。感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • Docker中的镜像详细介绍

    Docker中的镜像详细介绍

    这篇文章主要介绍了Docker中的镜像详细介绍的相关资料,需要的朋友可以参考下
    2017-05-05

最新评论