如何在 Docker 环境下拯救你的磁盘空间?——一场隐藏数据的救赎之旅

146243a027c1f175e26680a006be9f07.png

随着越来越多的应用部署在 Docker 容器中,可能你也和很多人一样,遇到了磁盘空间使用“高到让人绝望”的情况。明明没有太多数据,df -h 却警告你磁盘快满了?今天,我们就来揭开这一现象背后的秘密!

83% 磁盘使用率?——看似爆表的背后,究竟藏了什么猫腻?

如果你打开终端,运行了一个 df -h,看到满满的像是 overlay 和 shm 文件系统,Docker 看起来占用了无穷多的磁盘空间,但你却不知道为什么。这种现象主要有以下几个原因:

1.系统保留空间“偷偷”藏起来

Linux 文件系统(尤其是 ext4)默认会为超级用户保留 5% 的磁盘空间。你可能没怎么使用磁盘,但 df -h 显示的 83% 已经包含了这部分“隐藏”的空间。

    解决方法

    可以通过 tune2fs 命令减少保留空间的百分比。例如,将其从默认的 5% 减少到 1%,立即释放数十 GB 空间:

tune2fs -m 1 /dev/mapper/isw_dbc...Volume01

5002833958dbbafb76b448ebdc6fb567.png

2.删除的文件仍然占用磁盘空间:

可能你删除了不需要的 Docker 容器或镜像,但磁盘空间依然没有释放!这是因为某些进程可能仍在使用已删除的文件。

    解决方法

    可以通过以下命令找到那些被删除但仍在使用的文件:

lsof | grep deleted

如果有这样的文件,可能需要重启相关的进程或 Docker 服务才能释放空间。

揭秘 Docker 的“空间大胃王”——Overlay 文件系统的双面生活

Docker 的 overlay 文件系统虽然极大地方便了容器的快速启动和共享,但也悄悄吞噬了大量磁盘空间。这是由于 overlay 会为每个容器创建一个独立的分层文件系统,当这些层数增加时,就会造成磁盘占用率飙升。

怎么清理“偷吃”的磁盘空间?

1.清理无用的容器和镜像:

很多时候,旧的容器、无用的镜像、无关紧要的卷会成为磁盘的主要消耗者。你可以使用以下命令一次性清理掉所有未使用的资源:

docker system prune -a
docker volume prune

2.查看 Docker 实际占用的空间:

想知道 Docker 实际吃掉了多少空间?运行 docker system df 可以一目了然:

docker system df

让你的 Docker 更高效:限制日志和数据增长

除了清理无用的容器,Docker 容器的日志文件也会随着时间变得庞大,甚至悄悄吞噬掉你的磁盘空间。默认情况下,Docker 没有对日志大小进行限制,导致日志无限制增长。

e7f46224f569db2b74e71be430f84850.png

如何限制 Docker 日志大小?

你可以通过设置 log-opt 来限制每个容器的日志大小,避免日志暴涨:

--log-opt max-size=100m
--log-opt max-file=3


这样,Docker 日志文件就不会无休止地膨胀,节省下的空间还你一片“清静”。

压榨每一块磁盘的最后一丝空间:迁移 Docker 数据目录

如果你还有额外的磁盘或者大容量分区,可以考虑将 Docker 的数据存储路径(默认在 /var/lib/docker)迁移到更大的分区上。这样即便容器大量写入数据,也不会影响系统盘的空间。

迁移步骤简单易行:

1. 停止 Docker 服务:

systemctl stop docker


2. 将 /var/lib/docker 数据目录移动到新分区:

mv /var/lib/docker /new_disk/docker

3. 修改 Docker 配置文件 /etc/docker/daemon.json,指定新的数据目录:

{
"data-root": "/new_disk/docker"
}

4.启动 Docker 服务:

systemctl start docker


结语:不要再让磁盘空间成为隐形杀手

我们常常忽略了 Docker 带来的潜在磁盘空间问题,直到空间警告“啪啪啪”地跳出来。通过本文提到的几种方法,你可以有效控制磁盘使用情况,避免系统崩溃的风险。

定期清理、控制日志、迁移数据存储路径,才能让我们的 Docker 容器跑得又稳又轻松。让你的磁盘空间回到“应有的宽敞”,不再被 83% 的使用率困扰!

小技巧:如果想彻底了解 Docker 磁盘占用情况,还可以使用 docker system df -v 查看更详细的空间使用报告,包括每个镜像、卷和容器的具体占用情况。

85a359e86737d58951704d0965f1705a.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值