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启动问题docker is starting…

    如何解决Docker启动问题docker is starting…

    这篇文章主要给大家介绍了关于如何解决Docker启动问题docker is starting…的相关资料,文中通过图文将解决的过程介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • docker容器在uos-12038.101上启动报错的解决办法

    docker容器在uos-12038.101上启动报错的解决办法

    这篇文章主要介绍了docker容器在uos-12038.101上启动报错的问题,解决方案是需要在/etc/systemd/system/或者 /usr/lib/systemd/system/
    找到docker.service文件,在ExecStart=/usr/bin/dockerd后面添加 --default-ulimit nofile=65536:65536参数,需要的朋友可以参考下
    2024-03-03
  • Docker在Windows系统中的安装和使用方法详解

    Docker在Windows系统中的安装和使用方法详解

    这篇文章主要给大家介绍了关于Docker在Windows系统中的安装和使用方法,Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,需要的朋友可以参考下
    2023-09-09
  • 关于docker无法正常下载镜像的问题小结

    关于docker无法正常下载镜像的问题小结

    之前还可以正常下载镜像,但是一段时间之后就无法下载了,猜测可能是政治原因,无法连接到国外服务器,所以我设置了阿里云的镜像加速器,需要的朋友可以参考下
    2024-06-06
  • docker-maven-plugin打包镜像并上传到私有仓库

    docker-maven-plugin打包镜像并上传到私有仓库

    本文主要介绍了docker-maven-plugin打包镜像并上传到私有仓库,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Docker容器内无法解析域名:Temporary failure in name resolution

    Docker容器内无法解析域名:Temporary failure in name resolution

    本文主要介绍了Docker容器内无法解析域名:Temporary failure in name resolution,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • Docke容器分离部署LNMP的实现

    Docke容器分离部署LNMP的实现

    这篇文章主要介绍了Docke容器分离部署LNMP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Docker版Percona Xtrabackup全量压缩脚本方式

    Docker版Percona Xtrabackup全量压缩脚本方式

    本文介绍了如何在Linux环境下使用Percona XtraBackup进行MySQL数据库的每天定时备份,并通过脚本实现备份数据的压缩、日志管理以及定时任务的设置
    2026-02-02
  • docker配置普通用户访问的三种方法

    docker配置普通用户访问的三种方法

    本文主要介绍了docker配置普通用户访问的三种方法,让普通用户在Ubuntu系统上无需使用sudo权限即可使用Docker,每种方法都详细说明了具体步骤,并附带了相关命令,感兴趣的可以了解一下
    2024-11-11
  • docker-compose网络配置- IP 主机名 hosts配置方式

    docker-compose网络配置- IP 主机名 hosts配置方式

    这篇文章主要介绍了docker-compose网络配置- IP 主机名 hosts配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论