docker overlay2磁盘爆满,进行目录迁移

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
### 清理或减少 Docker Overlay2 存储驱动占用的磁盘空间 #### 了解原因 Overlay2Docker 的默认存储驱动,实现了镜像层和容器层的分层存储技术。当发现 `/var/lib/docker/overlay2` 目录占用较大时,通常是因为某些挂载的目录过大或是存在不必要的文件和日志[^1]。 #### 检查并清理无用资源 为了有效释放磁盘空间,建议先检查是否有不再使用的镜像、容器、网络或其他未被利用的资源: ```bash docker system prune -a ``` 此命令会删除所有停止的容器、未使用的网络以及悬空的镜像(即没有标签也没有容器依赖的镜像)。如果希望保留正在运行的服务而不影响它们,则可以省略 `-a` 参数[^3]。 #### 处理过大的日志文件 有时大量的日志记录也会导致磁盘使用率上升。可以通过截断现有日志或将旧日志轮转到新的位置来解决问题。对于单个容器的日志清理,可执行如下命令: ```bash sudo truncate -s 0 /var/lib/docker/containers/*/*.log ``` 这将会把所有的 JSON 日志文件大小设置为零字节,从而立即腾出大量空间。不过需要注意的是这样做可能会丢失一些有用的调试信息,在生产环境中应谨慎操作[^4]。 #### 调整配置优化长期性能 为了避免将来再次遇到同样的问题,考虑调整 Docker 守护进程和服务端口上的参数,例如通过 `daemon.json` 文件指定不同的日志级别或者启用日志旋转策略;也可以尝试更换更高效的日志驱动程序如 `journald` 或者自定义路径保存日志文件[^5]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN-FuWei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值