介绍

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

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"

docker 导出数据库 docker 数据迁移_linux_02

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

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

du -hs /var/lib/docker/ 命令查看磁盘使用情况。

docker 导出数据库 docker 数据迁移_docker 导出数据库_03

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

docker 导出数据库 docker 数据迁移_docker 导出数据库_04

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/      #也可以不删除留作备份