Docker容器引擎,迁移/var/lib/docker/到本机其它挂载分区或远程主机的某个分区

参考 迁移/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 协议使用方便,无需进行配置,但有泄漏服务器密码的风险。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容