将 Docker 数据迁移到新磁盘:详细操作指南

将 Docker 数据迁移到新磁盘:详细操作指南

背景

在容器化应用的部署中,Docker 通常将数据存储在默认的 /var/lib/docker 目录。然而,随着容器数量的增加和镜像的累积,该目录可能会迅速占满系统磁盘空间,从而影响系统的正常运行。为了避免磁盘空间不足的问题,可以通过将 Docker 数据目录迁移到容量更大的磁盘上来解决。本指南将详细说明如何将 Docker 数据从默认位置迁移到新磁盘(例如 /dev/sdb1)。


步骤 1:创建临时挂载点并挂载磁盘

注意 :如果磁盘尚未格式化,请先对其进行格式化操作。例如,使用以下命令格式化为 ext4 文件系统:

bash 复制代码
sudo mkfs.ext4 /dev/sdb1

请根据实际需求选择适合的文件系统类型(如 xfs 或其他)。

  1. 使用以下命令创建临时挂载点:

    bash 复制代码
    sudo mkdir /mnt/temp
  2. 将新磁盘挂载到临时目录:

    bash 复制代码
    sudo mount /dev/sdb1 /mnt/temp
  3. 验证挂载是否成功:

    bash 复制代码
    df -h

    确保 /dev/sdb1 显示在输出中并正确挂载到 /mnt/temp。


步骤 2:停止 Docker 服务

为了避免迁移过程中出现数据损坏,先停止 Docker 服务:

bash 复制代码
sudo systemctl stop docker

步骤 3:迁移现有数据到临时目录

使用 cp 命令将当前 /var/lib/docker 数据复制到挂载的磁盘中:

bash 复制代码
sudo cp -r -p /var/lib/docker/ /mnt/temp/
  • 选项解释:
    • -r:递归复制目录及其内容。
    • -p:保留文件的权限、时间戳等属性。

等待复制完成,根据数据量大小,可能需要一些时间。


步骤 4:挂载磁盘到 /var/lib/docker

  1. 取消临时挂载:

    bash 复制代码
    sudo umount /mnt/temp
  2. 将磁盘挂载到目标目录:

    bash 复制代码
    sudo mount /dev/sdb1 /var/lib/docker
  3. 为确保磁盘在系统重启后仍然自动挂载,编辑 /etc/fstab 文件,添加以下内容:

    复制代码
    /dev/sdb1    /var/lib/docker    ext4    defaults    0 0

    注意 :请根据磁盘的实际文件系统类型(如 ext4、xfs)调整上述配置。


步骤 5:启动 Docker 服务

挂载完成后,重新启动 Docker 服务:

bash 复制代码
sudo systemctl start docker

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

  1. 确认 Docker 服务是否正常启动:

    bash 复制代码
    sudo systemctl status docker

    如果状态显示为 active (running),则说明服务正常运行。

  2. 检查 Docker 的数据目录是否已迁移到新磁盘:

    bash 复制代码
    df -h | grep /var/lib/docker

    确认 /var/lib/docker 显示为挂载在 /dev/sdb1 的文件系统上。

  3. 测试容器运行情况:

    运行一个测试容器以确保功能正常:

    bash 复制代码
    docker run --rm hello-world

    如果输出显示 "Hello from Docker!",说明迁移成功且 Docker 正常运行。


通过以上步骤,成功将 Docker 数据从默认目录迁移到新的磁盘 /dev/sdb1,为后续的容器运行提供了更大的存储空间。

相关推荐
duansamve7 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
mengge.cloud8 小时前
prometheus+k8s+弹性伸缩,综合项目
云原生·容器·kubernetes·prometheus
Z21-X10 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
进击的荆棘12 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
瑞雪兆丰年兮13 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
xbzb13 小时前
从零容器化部署 ECShop:Harbor 私有仓库 + 自定义 PHP 镜像 + LNMP 三容器
容器·php·harbor·镜像·仓库·ecshop
那明眸似水13 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
腾飞开源14 小时前
03_Kubernetes 核心概念拆解:从 Spec/Status 收敛到工作负载控制器的设计逻辑
云原生·容器·kubernetes
小南家的青蛙15 小时前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻1 天前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器