Kubernetes 环境下迁移 Docker 数据目录教程
·
Kubernetes 环境下迁移 Docker 数据目录教程
一、操作背景
默认情况下,Docker 的数据目录位于:
/var/lib/docker
随着容器数量增多,该目录可能会占满系统盘。为了优化磁盘空间,可以将其迁移到新的磁盘路径(如 /home/docker 或 /data/docker)。
二、迁移目标
示例目标路径:
/home/docker
三、迁移步骤
1. 停止 Kubernetes 和 Docker 服务
首先停止依赖 Docker 的服务,防止迁移过程中文件被占用。
sudo systemctl stop kubelet
sudo systemctl stop docker
sudo systemctl stop containerd
查看 Docker 状态,确认已停止:
sudo systemctl status docker
2. 创建新的 Docker 存储目录
sudo mkdir -p /home/docker
3. 同步旧数据到新目录
使用 rsync 命令同步文件,保持权限与软链接信息完整。
sudo rsync -aP /var/lib/docker/ /home/docker/
参数说明:
-a:保留文件权限、时间、链接等信息;-P:显示同步进度。
4. 修改 Docker 配置文件
编辑 /etc/docker/daemon.json:
sudo vim /etc/docker/daemon.json
修改或新增如下内容:
{
"data-root": "/home/docker",
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://docker.1ms.run"],
"insecure-registries": ["192.168.31.217:5000"]
}
⚠️ 注意:
"data-root"为新的 Docker 存储路径(可根据实际目录修改,如/home/docker)。"insecure-registries"用于配置私有仓库地址。
5. 重新加载并启动服务
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl start containerd
sudo systemctl start kubelet
要注意顺序不能乱
6. 验证迁移结果
检查节点状态:
kubectl get nodes
查看 Docker 实际数据目录:
docker info | grep "Docker Root Dir"
若输出结果为:
Docker Root Dir: /data/docker
说明迁移已生效。

7. 清理旧目录(确认无误后)
确认服务正常运行后,可删除旧的 Docker 目录释放空间:
sudo rm -rf /var/lib/docker
四、总结
| 操作阶段 | 主要命令 | 说明 |
|---|---|---|
| 停止服务 | systemctl stop kubelet docker containerd | 防止文件占用 |
| 同步数据 | rsync -aP /var/lib/docker/ /home/docker/ | 保留权限与链接 |
| 修改配置 | /etc/docker/daemon.json | 更新存储路径 |
| 启动服务 | systemctl start docker kubelet | 恢复运行 |
| 验证迁移 | docker info、kubectl get nodes | 检查配置是否生效 |
更多推荐


所有评论(0)