迁移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实现安装ELK(单节点)

    Docker实现安装ELK(单节点)

    这篇文章主要介绍了Docker实现安装ELK(单节点),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Docker NFS volume创建与使用方式

    Docker NFS volume创建与使用方式

    这篇文章主要介绍了Docker NFS volume创建与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • docker run之后状态总是Exited

    docker run之后状态总是Exited

    这篇文章主要介绍了docker run之后状态总是Exited,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker安装ELK并实现JSON格式日志分析的方法

    Docker安装ELK并实现JSON格式日志分析的方法

    这篇文章主要介绍了Docker安装ELK并实现JSON格式日志分析的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Docker容器备份的常用方法总结

    Docker容器备份的常用方法总结

    容器化技术已经成为现代应用开发和部署的核心组成部分,而 Docker 作为最流行的容器平台,承载着越来越多的关键业务,在这些环境中,确保容器数据的安全性和可恢复性至关重要,本文给大家介绍了Docker容器备份的常用方法,需要的朋友可以参考下
    2025-08-08
  • docker-compose如何定义一个桥接网络,并为该网络配置一个IP地址池

    docker-compose如何定义一个桥接网络,并为该网络配置一个IP地址池

    在DockerCompose中定义桥接网络并配置IP地址池,可以实现服务的自动IP地址分配,通过定义网络、指定子网范围、设置网关和启用自动分配功能,可以轻松管理服务的网络配置,确保IP地址在子网范围内且不与其他网络冲突,以避免网络冲突
    2025-01-01
  • docker搭建lnmp环境的实现步骤

    docker搭建lnmp环境的实现步骤

    DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一键安装程序,本文就来介绍一下docker搭建lnmp环境的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Docker run命令挂载本地两个目录到容器内的详细教学

    Docker run命令挂载本地两个目录到容器内的详细教学

    这篇文章主要为大家详细介绍了Docker run命令挂载本地两个目录到容器内的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起
    2026-01-01
  • 详解docker-compose速度太慢解决方式

    详解docker-compose速度太慢解决方式

    这篇文章主要介绍了详解docker-compose速度太慢解决方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • docker容器日志时间不一致问题

    docker容器日志时间不一致问题

    这篇文章主要介绍了docker容器日志时间不一致问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05

最新评论