背景
有时候我们一台主机上部署了多个容器,而且对部分数据做了持久化,时间长了,数据会越来越多,相应的可能会造成磁盘空间不足?那么我们如何,找出占用磁盘空间最大的容器,并删除容器的部分不需要的日志或数据文件呢?
overlay2简介
OverlayFS是一种现代的联合文件系统,与AUFS类似,但速度更快且实现更简单。Docker为OverlayFS提供了两个存储驱动程序:原始的overlay,更新的和更稳定的overlay2。
容器存储目录
[root@docker overlay2]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 4.1G 34G 11% /
devtmpfs 911M 0 911M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 1.3M 919M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
overlay 40G 4.1G 34G 11% /var/lib/docker/overlay2/6c21d550b2e37e23b777490d3f3b26c54ed5b98ad615ac833ff4248a288b9530/merged
overlay 40G 4.1G 34G 11% /var/lib/docker/overlay2/aa7a46d5a35c404e956fa35c88c5ecb8f117d03299f3818d5c66c33caf4ee6f4/merged
overlay 40G 4.1G 34G 11% /var/lib/docker/overlay2/507f4480d6ed67738d618080b0fcbf60ca22623ba9a87eade44fa403e421cf55/merged
overlay 40G 4.1G 34G 11% /var/lib/docker/overlay2/5cc8105791fd74756b0f7cc36ec93685f3ca90bcb72ac025edb7389e5156228b/merged
overlay 40G 4.1G 34G 11%
在当前版本中,容器存储目录为/var/lib/docker/overlay2
。且当前占用宿主机磁盘空间的目录也为容器存储目录。
查找占用磁盘空间大小的容器目录
[root@docker overlay2]# du -s * | sort -nr | head -5
334636 f6acb9573429712fe4d8b8b786e24d790fae8727f403693874b62a168b174870
159348 86444fb8a5127b41323bef731c14eb764135a7066bb5f904427f53816ff4fe2f
146556 6c21d550b2e37e23b777490d3f3b26c54ed5b98ad615ac833ff4248a288b9530
102080 1eb50142766d18f3927615f63f599d9de1885b2954397736b882bb89ab8ae265
88504 ef4e0ff8bf2cd2f8d2f147e30e89e2c7b6f6e02795ebbcd45a3bba1d77b3b132
注意:这里只列出了排名
前五
的容器目录。那么现在知道了容器目录,那么如何找出对应的容器呢?现在我们要找出f6acb9573429
开头的目录对应时哪个容器?
查找容器目录对应的容器名
- 通过
docker ps -a
查看容器列表 - 通过
docker inspect 容器ID
查看容器配置信息
[root@docker overlay2]# for i in $(docker ps -q );do echo echo $i ; docker inspect $i|grep f6acb9573429 ; done
echo 4332fe39163b
"LowerDir": "/var/lib/docker/overlay2/**f6acb9573429**712fe4d8b8b786e24d790fae8727f403693874b62a168b174870-init/diff:/var/lib/docker/overlay2/b76d30a66c8fef0123a2310bd861a0aa626b5a6e7bf83f9982a6344c8e466187/diff:/var/lib/docker/overlay2/c5b396df751ea053d81765d77f85a8dd44c1c847b6fbe95b38230509f372dfd2/diff:/var/lib/docker/overlay2/1efa8716d1f55fde7716deaacabe0e582aff78f7e460f18b9d5dc84db387533e/diff:/var/lib/docker/overlay2/3f78cbaa248e4f8b1e25599e5e1e2496a463b75e39adfaad2026f134a8ebf89f/diff:/var/lib/docker/overlay2/18ca1077ac90dff82d1085d19162d7b56c42effce18b416632c0e1627602fb17/diff:/var/lib/docker/overlay2/bcee6e758f7ac5769da672274262d61b38acc2cc6ade4b9b56cd0475ca886528/diff:/var/lib/docker/overlay2/e23e02b967bdf1aaaef8e002f0a9f1d778d7a7de7adb12cd925e84ef770b62c7/diff:/var/lib/docker/overlay2/916a116fc26d356a61a9e028c52a3a402349e87e1e9eea6f4d2039cf31391155/diff",
"MergedDir": "/var/lib/docker/overlay2/f6acb9573429712fe4d8b8b786e24d790fae8727f403693874b62a168b174870/merged",
"UpperDir": "/var/lib/docker/overlay2/f6acb9573429712fe4d8b8b786e24d790fae8727f403693874b62a168b174870/diff",
"WorkDir": "/var/lib/docker/overlay2/f6acb9573429712fe4d8b8b786e24d790fae8727f403693874b62a168b174870/work"
echo 4172f0cf7985
echo a622665b0a81
echo 20fde2e0a903
注意:这里就已经找出了最占用磁盘空间大小的容器了。
4332fe39163b
为容器ID
.
查看镜像占用磁盘
docker system df
查看docker日志.json.log
docker
日志默认不作限制,可能产生非常大的日志文件,需要清理或者作出限制.
- 限制docker容器日志大小
// vim /etc/docker/daemon.json
{
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}