将/var/lib/docker/ 挂载到新磁盘的步骤

2 阅读2分钟

将 /var/lib/docker/ 挂载到新盘可以帮助你将 Docker 的数据存储移到新盘,从而增加系统盘的存储空间和性能。以下是详细的步骤来完成这个操作:

1. 挂载新磁盘

首先,确保新磁盘已经正确挂载到系统中。通常步骤如下:

1.1 列出所有磁盘

列出所有可用磁盘,以确保新磁盘已被系统识别:

lsblk

新磁盘通常会显示为类似于 /dev/sdc,并且没有分区或挂载点。

1.2 分区并格式化新磁盘

如果新磁盘未被分区和格式化,需要先进行分区和格式化:

# 创建新分区
fdisk /dev/sdc

# 依次输入 n (新建分区), p (主分区), 1 (分区号), 默认 (使用整个磁盘), w (写入并退出)

格式化为 ext4 文件系统:

mkfs.ext4 /dev/sdc1

1.3 创建挂载点并挂载新磁盘

创建一个挂载点,例如 /mnt/docker,并将新磁盘挂载到这个挂载点:

mkdir /mnt/docker
mount /dev/sdc1 /mnt/docker

确保磁盘自动挂载,在 /etc/fstab 添加一行:

echo '/dev/sdc1 /mnt/docker ext4 defaults 0 0' | sudo tee -a /etc/fstab

2. 迁移 /var/lib/docker/ 到新磁盘

2.1 停止 Docker 服务

在迁移数据之前,先停止 Docker 服务:

 systemctl stop docker

复制现有 Docker 数据

将 /var/lib/docker/ 的内容复制到新磁盘:

rsync -aP /var/lib/docker/ /mnt/docker/

确保所有文件和目录都被正确复制。

2.3 备份旧数据并更新挂载点

备份原始 Docker 数据目录,并将新磁盘的挂载点链接到 /var/lib/docker/:

# 备份旧数据
sudo mv /var/lib/docker /var/lib/docker.bak

# 创建新挂载目录并绑定
sudo mkdir /var/lib/docker
sudo mount --bind /mnt/docker /var/lib/docker

2.4 更新 /etc/fstab 以持久化更改

编辑 /etc/fstab 文件,以确保系统重启后新的挂载继续生效。添加如下行:

echo '/mnt/docker /var/lib/docker none bind 0 0' | sudo tee -a /etc/fstab

3. 重新启动 Docker 服务

最后,重新启动 Docker 服务并验证它是否正常工作:

systemctl start docker
systemctl status docker

4. 验证 Docker 正常运行

通过运行一些 Docker 命令,验证 Docker 是否正常运行,确保数据已成功迁移:

docker ps
docker info

5.清理

如果确认一切正常,可以删除备份的旧 Docker 数据目录:

rm -rf /var/lib/docker.bak