详解如何查看 docker 容器使用的资源

 更新时间:2017年11月14日 09:05:30   作者:sparkdev  
本篇文章主要介绍了详解如何查看 docker 容器使用的资源,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在容器的使用过程中,如果能及时的掌握容器使用的系统资源,无论对开发还是运维工作都是非常有益的。幸运的是 docker 自己就提供了这样的命令:docker stats。

默认输出

docker stats 命令用来显示容器使用的系统资源。不带任何选项执行 docker stats 命令:

$ docker stats

默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:

[CONTAINER]:以短格式显示容器的 ID。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。

只返回当前的状态

如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态:

$ docker stats --no-stream

这样输出的结果就不会变化了,看起来省劲不少。

只输出指定的容器

如果我们只想查看个别容器的资源使用情况,可以为 docker stats 命令显式的指定目标容器的名称或者是 ID:

$ docker stats --no-stream registry 1493

当有很多的容器在运行时,这样的结果看起来会清爽一些。这里的 registry 和 1493 分别是容器的名称和容器的 ID。注意,多个容器的名称或者是 ID 之间需要用空格进行分割。

细心的同学可能已经发现了,第一列不再显示默认的容器 ID,而是显示了我们传入的容器名称和 ID。基于此,我们可以通过简单的方式使用容器的名称替代默认输出中的容器 ID:

$ docker stats $(docker ps --format={{.Names}})

用容器的名称替代 ID 后输出的结果是不是友好一些?

格式化输出的结果

我们在前面搞了点小手段把输出中的容器 ID 替换成了名称。其实 docker stats 命令支持我们通过 --format 选项自定义输出的内容和格式:

$ docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

上面的命令中我们只输出了 Name, CPUPerc 和 Memusage 三列。下面是自定义的格式中可以使用的所有占位符:
.Container    根据用户指定的名称显示容器的名称或 ID。
.Name           容器名称。
.ID                 容器 ID。
.CPUPerc       CPU 使用率。
.MemUsage  内存使用量。
.NetIO           网络 I/O。      
.BlockIO        磁盘 I/O。
.MemPerc     内存使用率。
.PIDs             PID 号。

有了这些信息我们就可以完全按照自己的需求或者是偏好来控制 docker stats 命令输出的内容了。

除了以 table 格式输出结果,还可以通过 format 选项输出 json 格式的结果:

$ docker stats --no-stream --format \
"{\"container\":\"{{ .Container }}\",\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"cpu\":\"{{ .CPUPerc }}\"}"

总结

通过 docker stats 命令我们可以看到容器使用系统资源的情况。这为我们进一步的约束容器可用资源或者是调查与资源相关的问题提供了依据。除了 docker 自带的命令,像 glances 等工具也已经支持查看容器使用的资源情况了,有兴趣的朋友可以去了解一下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解Docker方式实现MySql 主从复制(实践篇)

    详解Docker方式实现MySql 主从复制(实践篇)

    本篇文章主要介绍了详解Docker方式实现MySql 主从复制(实践篇),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • ubuntu如何在docker容器中安装strongswan

    ubuntu如何在docker容器中安装strongswan

    这篇文章主要介绍了ubuntu如何在docker容器中安装strongswan,起动一个ubuntu容器,我是用的docker compose启动的,compose的配置文件为ipsec-strongswan.yml,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • docker volume删除卷的操作

    docker volume删除卷的操作

    这篇文章主要介绍了docker volume删除卷的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 详解Docker创建Mysql容器并通过命令行连接到容器

    详解Docker创建Mysql容器并通过命令行连接到容器

    本篇文章主要介绍了Docker创建Mysql容器并通过命令行连接到容器,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • docker-compose中的redis-stack详解

    docker-compose中的redis-stack详解

    Redis是一个开源的内存数据结构存储系统,主要用于数据库、缓存和消息代理,支持多种数据结构,RedisStack则基于Redis,提供栈的操作及扩展功能,适合复杂数据处理,本文给大家介绍docker-compose中的redis-stack,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • docker和docker compose版本太低问题的解决方案

    docker和docker compose版本太低问题的解决方案

    本文主要介绍了Docker和docker-compose版本过低导致的KeyError: 'ContainerConfig'错误的解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • 使用docker指令如何删除所有不再使用的镜像

    使用docker指令如何删除所有不再使用的镜像

    这篇文章主要介绍了使用docker指令如何删除所有不再使用的镜像问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Docker 容器文件系统详细介绍(图文)

    Docker 容器文件系统详细介绍(图文)

    这篇文章主要介绍了Docker 容器文件系统详细介绍(图文)的相关资料,这里对Docker 容器文件系统进行了具体的分析详解,需要的朋友可以参考下
    2016-12-12
  • 完美解决Windows10下无法对docker容器进行端口访问的操作

    完美解决Windows10下无法对docker容器进行端口访问的操作

    这篇文章主要介绍了完美解决Windows10下无法对docker容器进行端口访问的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 使用Shell脚本批量启停Docker服务

    使用Shell脚本批量启停Docker服务

    最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,下面小编把我实现过程分享到脚本之家平台,需要的朋友参考下
    2019-11-11

最新评论