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