专栏首页运维录如何查找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
  • 支持100+业务线、累计发布17万次|宜信容器云的A点与B点(分享实录)

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

    宜信技术学院
  • 容器采用时最常见的N个挑战该如何克服?

    虽然容器技术势头不减,但仍然没有在企业中被广泛采用。虽然许多DevOps团队正在尝试使用容器并将此技术慢慢引入生产环境中来,但大多数组织机构仍然不知道从哪里开始...

    静一
  • 容器 VS. 虚拟机:云中应该使用哪一种?

    在开足马力使用容器之前,了解容器与虚拟机在私有云、公共云以及混合云部署之间的区别是至关重要的。 虽然目前大多数的云部署都是基于虚拟机的,但是容器技术为云用户带来...

    静一
  • [docker](八)docker -- 网络管理

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

    baron
  • 容器与DevOps 被称为天作之合的7个原因

    作为自动化应用程序部署的一种方式, 容器的流行程度在不同行业的企业环境中不断上升。根据行业研究调查显示, 虽然云原生正在拥抱容器技术,但只有约10%的企业在生产...

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

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

    用户6543014
  • 容器进化史

    和虚拟机一样,容器技术也是一种资源隔离的虚拟化技术。我们追溯它的历史,会发现它的技术雏形早已有之。 容器简史 容器概念始于 1979 年提出的 UNIX chr...

    CloudDeveloper

扫码关注云+社区

领取腾讯云代金券