您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Docker的/var/lib/docker目录怎么迁移
## 前言
Docker默认将容器、镜像、卷等数据存储在`/var/lib/docker`目录下。随着使用时间增长,该目录可能占用大量磁盘空间,当系统分区空间不足或需要优化存储性能时,迁移Docker数据目录成为必要操作。本文将详细介绍迁移步骤及注意事项。
---
## 一、准备工作
### 1. 确认当前Docker存储路径
```bash
docker info | grep "Docker Root Dir"
输出示例:
Docker Root Dir: /var/lib/docker
使用df -h
确认目标分区有足够空间(建议预留原目录2倍空间)
sudo systemctl stop docker
sudo systemctl stop containerd # 如果使用containerd运行时
sudo mkdir -p /new/path/docker
sudo chown root:root /new/path/docker
sudo rsync -avxP /var/lib/docker/ /new/path/docker/
参数说明:
- -a
:归档模式
- -v
:显示进度
- -x
:不跨越文件系统边界
- -P
:显示进度条
sudo mv /var/lib/docker /var/lib/docker.bak
sudo vim /etc/docker/daemon.json
添加内容:
{
"data-root": "/new/path/docker"
}
sudo systemctl daemon-reload
sudo systemctl start docker
du -sh /new/path/docker
docker ps -a
docker images
docker info | grep "Docker Root Dir"
症状:
Got permission denied while trying to connect to the Docker daemon socket
解决方案:
sudo chmod 755 /new/path/docker
sudo systemctl restart docker
如果更换存储驱动(如从aufs改为overlay2),需要:
1. 完全删除原docker目录
2. 在daemon.json
中添加:
{
"storage-driver": "overlay2"
}
处理方案: 1. 清理无用数据:
docker system prune -a --volumes
sudo ln -s /new/path/docker /var/lib/docker
如果使用LVM卷管理:
lvextend -L +50G /dev/mapper/vg-docker
resize2fs /dev/mapper/vg-docker
sudo mkfs.xfs /dev/sdb1
sudo mount /dev/sdb1 /new/path/docker
在/etc/fstab
中添加:
/dev/sdb1 /new/path/docker xfs defaults 0 0
生产环境建议:
--dry-run
测试rsync命令数据一致性:
mv
命令移动目录特殊存储驱动:
通过合理规划Docker数据存储位置,可以有效解决系统分区空间不足的问题。建议在首次部署Docker时就通过daemon.json
指定大容量分区作为数据目录。对于已运行的环境,采用rsync方案能最大限度保证数据安全。迁移完成后,别忘了清理原目录释放空间。
附录:相关官方文档
- Docker存储参考
- daemon.json配置说明 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。