专栏首页运维录如何查找Docker中使用磁盘空间最多的容器?

如何查找Docker中使用磁盘空间最多的容器?

背景描述

测试环境某台Docker主机触发磁盘空间报警,经过排查与分析发现是某个docker容器内的应用日志过大导致的,下面是具体的排查步骤。

环境描述

日志文件: php容器 stderr日志
PHP容器: 使用 php:5.6-fpm 镜像
Docker主机:
    系统: Ubuntu Server 16.04
    Storage Driver: overlay2
容器平台: Rancher 1.6

操作步骤

1. 磁盘空间(文件系统)状态

df -Th /
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/vda1      ext4   99G   70G   25G  75% /

2. 统计目录占用磁盘空间

du -h --max-depth=1 /

发现最大目录依次如下列表:

/var/
/var/lib/
/var/lib/docker/
/var/lib/docker/overlay2/

最终占用最大的目录是: ef24649...省略...f7e6933/

这个目录是某个容器临时存储层目录,其生命周期取决于这个容器的生命周期,目录的名称也是临时存储层的ID,我们可以根据这个ID找到目标容器。

3. 找到这个容器

for c in `docker ps -qa`; \
do \
  docker inspect $c \
  | grep -i 'ef24649...省略...f7e6933' && echo $c; \
done

8b251ce7f7ae

这里使用Shell循环依次对比当前主机的容器是否包含这个临时存储层ID。

4. 根据容器ID找到容器名字

docker inspect -f '{{ .Name }}'  8b251ce7f7ae

/r-css-css-server-1-d3579e44

5. 释放磁盘空间

最后我们要释放被占用的磁盘空间,可以根据找到容器ID/名称在rancher平台上升级这个应用(旧的容器将被替换删除)。

6. 验证磁盘空间

df -Th /
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/vda1      ext4   99G   17G   78G  18% /

小结

最后来总结下文章中的知识点

  • 容器存储层的生存周期和容器一样,容器消亡时容器存储层也随之消亡。
  • 任何保存于容器存储层的信息都会随容器删除而消失。
  • 容器数量较多时可以使用Shell循环,批量对比容器配置信息来找到目标容器。

本文分享自微信公众号 - 运维录(gh_70d95b8f5f7c),作者:东南

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何获得Docker容器进程ID?

    在某些情况下,比如系统负载很高 docker stop 无法关闭某个容器(无响应),这时可以根据容器进程的ID找到宿主机进程ID,然后强制kill掉这个容器,最...

    用户1560186
  • Docker 专题-序篇

    从2016年第一次接触docker开始到2019年7月最后一篇文章,博客记录了与docker相关的文章100+篇。

    用户1560186
  • 如何设置Docker容器重启策略?

    宿主机可能会因某些原因(如宕机)重新启动,默认情况下docker容器是停止状态的,这可能会对某些应用场景带来不便,所以docker提供了--restart参数,...

    用户1560186
  • 想要使用容器技术 这5类遗留工具就应该被淘汰

    充分利用容器并不只是安装Dockers和激活容器应用程序那么简单。你需要改进的同样还有监控方法、安全性能等。 这么做的理由是,容器并不只是对你过去工作中使用到的...

    静一
  • 谈到云原生, 绕不开"容器化"

    在《Cloud Native Patterns》一书中,作者Cornelia Davis指出:“容器是云原生应用的基石”; 云原生基金会将微服务容器化作为云原生...

    小码甲
  • springsecurity框架的学习,根据操作修改后台ssm项目进行学习,项目中springioc容器的结构,也就是项目中有多少个容器,各个容器有什么关系(十二)

    我们可以将我们的项目当做一个父容器,就是tomcat这个容器,我们的项目可以在tomcat服务器上面进行启动,所以可以将我们的项目当做一个父容器,这个父容器...

    一天不写程序难受
  • 支持100+业务线、累计发布17万次|宜信容器云的A点与B点(分享实录)

    宜信公司从2018年初开始建设容器云,至今,容器云的常用基本功能已经趋于完善,主要包括服务管理、应用商店、Nginx配置、存储管理、CI/CD、权限管理等,支持...

    宜信技术学院
  • [docker](八)docker -- 网络管理

    如图所示,Docker daemon通过调用libnetwork对外提供的API完成网络的创建和管理等功能。libnetwork中则使用了CNM来完成网络功能的...

    baron
  • 为什么保护容器和微服务很难?

    开发人员可用容器创建微服务,也就是应用的可重用组件。因为可重用,微服务能帮开发人员免掉重新开发的时间。另外,微服务可跨不同平台部署。

    用户6543014
  • 关于容器、微服务、docker的十大问题

    容器的运行无法简单参考虚拟机的实践经验。例如,几乎任何工作负载都可以立即虚拟化,但是有些工作负载适合容器化部署,有的则不适合。

    FB客服

扫码关注云+社区

领取腾讯云代金券