# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。