参考 迁移/var/lib/docker/overlay2解决磁盘空间满
场景1:在本机迁移/var/lib/docker/到其它挂载分区,用于解决磁盘空间不足
0. 迁移前检查镜像和容器
docker images 和docker ps -a
1. 停止Docker引擎
systemctl stop docker
2. 创建新的docker目录
mkdir -p /home/docker/lib/
3. 迁移/var/lib/docker/到/home/docker/lib/
rsync -avz /var/lib/docker/ /home/docker/lib/
4. 确认文件是否存在并配置devicemapper.conf
mkdir -p /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/devicemapper.conf
[Service]
ExecStart=/usr/bin/dockerd --graph=/home/docker/lib/docker
5. 重新加载docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
6. 迁移后检查
检查docker路径是否变更
docker info
Docker Root Dir: /home/docker/lib/docker
启动成功后,docker images查看之前镜像是否存在。
7. 确定无误后删除/var/lib/docker/
场景2:迁移/var/lib/docker/到远程主机的挂载分区
只需要把场景1中3步骤修改即可。
3. 迁移/var/lib/docker/到远程主机的/home/docker/lib/
rsync -avz /var/lib/docker/ root@host:/home/docker/lib/
备注:rsync用法简单说明
rsync命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。
本文用到的两种命令格式:
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
-a 归档模式,表示以递归方式传输文件,并保持所有属性。
-r 以递归模式处理子目录
-z 在传输过程中压缩方式传输
使用rsync在远程传输数据(备份数据)前,是需要进行登陆认证的,这个过程需要借助 ssh 协议或者 rsync 协议才能完成。在 rsync 命令中,如果使用单个冒号(:),则默认使用 ssh 协议;反之,如果使用两个冒号(::),则使用 rsync 协议。
ssh 协议和 rsync 协议的区别在于,rsync 协议在使用时需要额外配置,增加了工作量,但优势是更加安全;反之,ssh 协议使用方便,无需进行配置,但有泄漏服务器密码的风险。