docker overlay2目录迁移
一、确定当前磁盘使用情况
du -hs /var/lib/docker/
若overlay2目录使用率较高,并且没有闲置容器和无用镜像可清理,则需要进行扩容或者迁移
以下命令谨慎操作:
docker system prune #命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
二、查看当前docker磁盘使用情况
dockecr system df
三、停止docker服务
systemctl stop docker
PS:此操作会导致所有容器暂时停止运行
四、创建迁移新目录
通过执行df -h命令,找一个大的磁盘,在该磁盘创建一个新目录(比如/home)
mkdir -p /home/docker/lib
五、迁移旧数据到新目录下
rsync -avz /var/lib/docker /home/docker/lib/
六、配置docker启动文件
先查看 devicemapper.conf 是否存在,如果不存在,则新建。
mkdir -p /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/devicemapper.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/home/docker/lib/docker
七、重新加载docker服务
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
八、检查是否迁移成功
docker info
...
Docker Root Dir: /home/docker/lib/docker #docker根目录是否替换成新目录
Debug Mode: false
...
九、确认镜像是否存在
docker images
十、重新启动容器
docker restart xxx #通过docker ps -a查看停止docker服务之前,哪些容器退出,并逐个重启
docker ps #重启完成之后,查看容器是否都正常运行
十一、回滚操作
当docker服务启动异常或者容器启动异常,则进行回滚操作
#停止docker服务
systemctl stop docker
#移除配置文件
mv /etc/systemd/system/docker.service.d/devicemapper.conf /tmp
#重新加载docker服务
systemctl daemon-reload
#重新启动docker服务
systemctl restart docker
#设置开机自启
systemctl enable docker
#重新拉起容器
docker restart xxx
#检查所有容器是否正常拉起
docker ps
#确认都没有问题了,删除新目录
rm -rf /home/docker/lib/docker