共计 1027 个字符,预计需要花费 3 分钟才能阅读完成。
使用 Golang 开发的 Docker 运维小工具,方便运维或开发人员查找容器的磁盘占用,如果机器为 kubernetes node 节点,则可以通过 k8s 参数对名称进行解析, 解析后的名称将更友好的显示 kubernetes pod 信息
k8s 容器临时存储长时间情况下会导致容器磁盘占用量增大,可以通过 ephemeral-storage
参数限制 k8s 容器磁盘, 但是这种会导致使用过程中容器被驱逐,对开发人员不太友好,更好的方式是采用 NFS 或其他磁盘存储
运维人员排查容器磁盘占用可使用 docker system df -v
查看容器和镜像磁盘占用,但是过滤筛选比较麻烦,通过此工具,可以快速过滤筛选磁盘信息,结合 kubectl 可以快速删除占用量大的 POD 容器
https://github.com/typ431127/docker-disk
编译安装
go build
Linux 服务器快速安装
curl https://ddn-cloud.oss-cn-beijing.aliyuncs.com/github/docker-disk/docker-disk-linux-amd64 -o /usr/bin/docker-disk
chmod +x /usr/bin/docker-disk
使用命令
# 显示所有容器磁盘占用
./docker-disk
# 使用 k8s 名称解析
./docker-disk -k8s
# 过滤磁盘占用大于 1g 的容器
./docker-disk -size 1g
# 过滤磁盘占用大于 100m 的容器
./docker-disk -size 100m
# 不显示 k8s pause 容器
./docker-disk -k8s -nopause
配合 kubectl 删除容器
# 显示删除命令
./docker-disk -k8s -size 1g -delete-commond
# 调用 kubectl 删除
./docker-disk -k8s -size 1g -delete-commond |xargs -I {} bash -c "{}"
版本异常解决
Error response from daemon: client version 1.39 is too new. Maximum supported API version is 1.35
解决:
# 指定 API 版本
./docker-disk -withversion 1.35
./docker-disk -withversion `docker version|grep "API version"|awk '{print $3}'|head -n 1`
截图展示
正文完