将 /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