迁移docker数据目录,释放硬盘数据过程

 更新时间:2026年05月22日 09:06:52   作者:dayfoxman  
这篇文章主要介绍了迁移docker数据目录,释放硬盘数据过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

将 Docker 数据目录迁移到新位置(如 /data2)可以释放系统盘空间或优化存储结构。

以下是安全、完整的迁移步骤。

迁移前准备

# 1. 查看当前 Docker 根目录
docker info | grep "Docker Root Dir"

# 2. 查看磁盘空间
df -h

# 3. 查看容器和镜像占用
docker system df

步骤 1:停止 Docker 服务

# 停止所有容器
docker stop $(docker ps -aq)

# 停止 Docker 服务
systemctl stop docker
# 或
service docker stop

步骤 2:备份现有数据(可选但推荐)

# 创建备份
tar -czvf /root/docker-backup-$(date +%F).tar.gz /var/lib/docker

# 或完整备份整个目录
cp -r /var/lib/docker /root/docker-backup-$(date +%F)

步骤 3:迁移数据到新位置

注意用rsync -avz 保留权限,不然后期因为权限带来非常多问题。

# 假设新目录为 /data2/docker
mkdir -p /data2/docker

# 复制数据(保留权限和属性)
rsync -avz /var/lib/docker/ /data2/docker/

# 或使用 cp
# cp -a /var/lib/docker/* /data2/docker/

步骤 4:修改 Docker 配置

方法一:修改 daemon.json(推荐)

# 编辑配置文件
vim /etc/docker/daemon.json

# 添加或修改以下内容
{
  "data-root": "/data2/docker"
}

如果文件不存在,创建它。确保 JSON 格式正确。

注意:

1、docker版本不一样,参数不一样

        

2、不需要修改 storage-driver 的配置值,但需要保留该配置。

简单来说:

  • storage-driver 是 Docker 存储数据的方式(引擎)。
  • data-root 是 Docker 存储数据的位置(路径)。

方法二:修改 systemd 服务文件

# 编辑服务文件
vim /etc/systemd/system/docker.service.d/override.conf

# 添加以下内容
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --data-root=/data2/docker

步骤 5:清理并重启

# 可选:备份原目录(确认迁移成功后再删除)
mv /var/lib/docker /var/lib/docker.backup

# 重新加载 systemd 配置
systemctl daemon-reload

# 启动 Docker
systemctl start docker

# 设置开机自启
systemctl enable docker

步骤 6:验证迁移

# 检查 Docker 根目录是否变更
docker info | grep "Docker Root Dir"

# 检查容器状态
docker ps -a

# 检查镜像
docker images

# 测试运行容器
docker run --rm hello-world

# 检查新目录占用
du -sh /data2/docker

可选:迁移特定子目录

如果只想迁移部分数据(如容器、镜像):

# 只迁移容器数据
rsync -avz /var/lib/docker/containers/ /data2/docker/containers/

# 只迁移镜像数据
rsync -avz /var/lib/docker/image/ /data2/docker/image/

常见问题处理

1. 权限问题

# 确保目录权限正确
chown -R root:root /data2/docker
chmod -R 711 /data2/docker

2. SELinux 问题(CentOS/RHEL)

# 设置正确的上下文
chcon -R -t var_lib_t /data2/docker

# 或临时禁用
setenforce 0

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker多阶段构建镜像multi-stage详解

    Docker多阶段构建镜像multi-stage详解

    多阶段构建是Docker 17.05及以上版本的新特性,允许在一个Dockerfile中使用多个阶段,每个阶段可以有一个独立的基础镜像,并且可以通过COPY --from命令在阶段之间传递文件,这样可以有效地减少最终镜像的大小,只保留必要的文件
    2025-10-10
  • docker中nginx的location转发不生效的解决

    docker中nginx的location转发不生效的解决

    这篇文章主要介绍了docker中nginx的location转发不生效的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 更改Docker默认数据目录解决部署空间不足问题

    更改Docker默认数据目录解决部署空间不足问题

    随着使用 Docker 的时间增加,存储在默认数据目录(通常是 /var/lib/docker)中的数据量也会不断增大,最终可能导致服务器上的存储空间不足,这篇文章将详细介绍如何更改 Docker 的默认数据目录,以便在服务器上释放存储空间并优化资源利用,需要的朋友可以参考下
    2024-06-06
  • docker中使用mongodb数据库详解(在局域网访问)

    docker中使用mongodb数据库详解(在局域网访问)

    这篇文章主要给大家介绍了在docker中使用mongodb数据库,在局域网访问的相关资料,文中将步骤介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • 详解Docker Compose 中可用的环境变量问题

    详解Docker Compose 中可用的环境变量问题

    Compose 的多个部分在某种情况下处理环境变量。这篇文章主要介绍了Docker Compose 中可用的环境变量问题,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Docker Compose与Docker镜像仓库详解

    Docker Compose与Docker镜像仓库详解

    Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器,这篇文章主要介绍了Docker Compose与Docker镜像仓库,需要的朋友可以参考下
    2023-03-03
  • docker build -t 和 docker build -f 区别解析

    docker build -t 和 docker build -f 区别解析

    docker build 是用于构建Docker镜像的命令,它允许你基于一个Dockerfile来创建一个镜像,在 docker build 命令中,有两个常用的选项 -t 和 -f,它们有不同的作用,这篇文章主要介绍了docker build -t 和 docker build -f 区别,需要的朋友可以参考下
    2023-08-08
  • Docker容器 日志中文乱码问题解决办法

    Docker容器 日志中文乱码问题解决办法

    这篇文章主要介绍了Docker容器 日志中文乱码问题解决办法的相关资料,需要的朋友可以参考下
    2016-12-12
  • Docker部署安装Nginx的详细过程

    Docker部署安装Nginx的详细过程

    Nginx 是一款高性能的 web 服务器、反向代理服务器以及电子邮件(IMAP/POP3/SMTP)代理服务器,这篇文章主要介绍了Docker部署安装Nginx,需要的朋友可以参考下
    2024-04-04
  • Docker consul的容器服务更新与发现的问题小结

    Docker consul的容器服务更新与发现的问题小结

    这篇文章主要介绍了Docker consul的容器服务更新与发现,讲解了服务注册与发现的基本概念讲解,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08

最新评论