Docker目录迁移

  • Post author:
  • Post category:其他




介绍

在docker的使用中随着下载镜像越来越多,构建镜像、运行容器越来越多, 数据目录必然会逐渐增大;当所有docker镜像、容器对磁盘的使用达到上限时,就需要对数据目录进行迁移。

在这里插入图片描述

如何避免:

1.在安装前对/var/lib/docker(docker默认数据存储目录)目录进行扩容;

2.在docker安装完成后,修改docker默认存储位置为磁盘容量较大的位置;规避迁移数据过程中造成的风险。

如何避免:
1.在安装前对/var/lib/docker(docker默认数据存储目录)目录进行扩容;
2.在docker安装完成后,修改docker默认存储位置为磁盘容量较大的位置;规避迁移数据过程中造成的风险。

前置工作

在迁移前确认迁移的目标目录空间是否充足

在迁移时需停止docker服务,务必在平台不使用时进行迁移

使用以下命令查询当前docker数据目录安装路径:

docker info | grep "Docker Root Dir"

在这里插入图片描述

下文以 /home/docker 这个路径作为要迁移的新 Docker 安装(存储)目录

/var/lib/docker是docker安装后默认的数据存储路径


du -hs /var/lib/docker/

命令查看磁盘使用情况。

在这里插入图片描述


docker system df

命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况

在这里插入图片描述


docker system prune

命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。


docker system prune -a

命令清理得更加彻底,可以将暂时没由用到的容器和镜像都删掉;慎用



步骤

第一步:停止dock服务

systemctl stop docker

第二步.创建新目录,即要迁移到哪里

mkdir -p /home/docker/lib

第三步.迁移/var/lib/docker目录下面的文件到 /home/docker/lib,此处需要漫长时间,慢慢等待…

rsync -avz /var/lib/docker /home/docker/lib/

第四步.配置 /etc/systemd/system/docker.service.d/devicemapper.conf,查看 devicemapper.conf 是否存在.如果不存在,就新建.

mkdir -p /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/devicemapper.conf

第五步. 然后在 devicemapper.conf 写入:(同步的时候把父文件夹一并同步过来,实际上的目录应在 /home/docker/lib/docker)

   [Service]
    ExecStart=/usr/bin/dockerd  --graph=/home/docker/lib/docker

第六步. 重新加载 docker

systemctl daemon-reload
 
systemctl restart docker
 
systemctl enable docker

第七步.确认是否迁移成功

[root@localhost~]# docker info
    迁移成功示例:
        Docker Root Dir: /home/docker/lib/docker
        Debug Mode (client): false
        Debug Mode (server): false
        Registry: https://index.docker.io/v1/
[root@localhost~]# docker images    //确认之前的镜像还在
第八步.确认信息无误后,清楚旧数据释放空间:
 [root@localhost~]# rm -rf /var/lib/docker/      #也可以不删除留作备份



版权声明:本文为wuyongde0922原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。