将 Docker 数据迁移到新磁盘:详细操作指南
背景
在容器化应用的部署中,Docker 通常将数据存储在默认的 /var/lib/docker
目录。然而,随着容器数量的增加和镜像的累积,该目录可能会迅速占满系统磁盘空间,从而影响系统的正常运行。为了避免磁盘空间不足的问题,可以通过将 Docker 数据目录迁移到容量更大的磁盘上来解决。本指南将详细说明如何将 Docker 数据从默认位置迁移到新磁盘(例如 /dev/sdb1
)。
步骤 1:创建临时挂载点并挂载磁盘
注意 :如果磁盘尚未格式化,请先对其进行格式化操作。例如,使用以下命令格式化为 ext4
文件系统:
bash
sudo mkfs.ext4 /dev/sdb1
请根据实际需求选择适合的文件系统类型(如 xfs
或其他)。
-
使用以下命令创建临时挂载点:
bashsudo mkdir /mnt/temp
-
将新磁盘挂载到临时目录:
bashsudo mount /dev/sdb1 /mnt/temp
-
验证挂载是否成功:
bashdf -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
-
取消临时挂载:
bashsudo umount /mnt/temp
-
将磁盘挂载到目标目录:
bashsudo mount /dev/sdb1 /var/lib/docker
-
为确保磁盘在系统重启后仍然自动挂载,编辑
/etc/fstab
文件,添加以下内容:/dev/sdb1 /var/lib/docker ext4 defaults 0 0
注意 :请根据磁盘的实际文件系统类型(如
ext4
、xfs
)调整上述配置。
步骤 5:启动 Docker 服务
挂载完成后,重新启动 Docker 服务:
bash
sudo systemctl start docker
步骤 6:验证迁移是否成功
-
确认 Docker 服务是否正常启动:
bashsudo systemctl status docker
如果状态显示为
active (running)
,则说明服务正常运行。 -
检查 Docker 的数据目录是否已迁移到新磁盘:
bashdf -h | grep /var/lib/docker
确认
/var/lib/docker
显示为挂载在/dev/sdb1
的文件系统上。 -
测试容器运行情况:
运行一个测试容器以确保功能正常:
bashdocker run --rm hello-world
如果输出显示 "Hello from Docker!",说明迁移成功且 Docker 正常运行。
通过以上步骤,成功将 Docker 数据从默认目录迁移到新的磁盘 /dev/sdb1
,为后续的容器运行提供了更大的存储空间。