在容器的使用过程中,如果能及时的掌握容器使用的系统资源,无论对开发还是运维工作都是非常有益的。幸运的是 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 

当有很多的容器在运行时,这样的结果看起来会清爽一些。这里的 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 容器使用的资源的更多相关文章

  1. [转]查看 docker 容器使用的资源

    作者:sparkdev 出处:http://www.cnblogs.com/sparkdev/     在容器的使用过程中,如果能及时的掌握容器使用的系统资源,无论对开发还是运维工作都是非常有益的.幸 ...

  2. 实时查看docker容器日志

    实时查看docker容器日志 $ sudo docker logs -f -t --tail 行数 容器名 例:实时查看docker容器名为s12的最后10行日志 $ sudo docker logs ...

  3. Docker 容器(container)及资源限制

    Container: 既然container是由image运行起来的,那么是否可以理解为container和image有某种关系?先来看张图: 其实可以理解为container只是基于image之后的 ...

  4. 如何查看Docker容器环境变量,如何向容器传递环境变量

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 了解Docker容器的运行环境非常重要,我们把应用放在容器里执行,环境变量会直接影响程序的执行效果.所以我们要知道容器内部的 ...

  5. 查看docker容器的内存占用

    使用docker stats命令可以查看容器的内存,但是有时候docker stats命令获得的数据可能准确,可以参考下面这种方式 先通过docker ps -a 找到容器的container id ...

  6. 查看docker容器占用的内存

    # 获取容器ID docker ps => 3b7fa46d9d43 # 根据容器ID获取对应的进程 docker top 3b7fa46d9d43 => 179733 # 查看进程占用的 ...

  7. 查看docker容器的IP地址

    |awk '{print $2}' |tr '"' " " |tr ',' ' '       # 可以用容器id或名称 方法二: docker inspect --fo ...

  8. 【docker】查看docker容器或镜像的详细信息命令,查看docker中正在运行的容器的挂载位置

    命令: docker inspect f257d69e0035 格式: docker inspect 容积或镜像ID 首先,docker ps获取简要信息 然后输入命令docker inspect   ...

  9. Linux查看docker容器日志

    docker logs -f 容器名或ID | grep fail | more grep fail:过滤包含fail的日志内容

随机推荐

  1. String Problem hdu 3374 最小表示法加KMP的next数组

    String Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. 关于修改extmail附件大小限制的位置

    一.修改extmail的webmail.cf文件, SYS_MESSAGE_SIZE_LIMIT = 5242880 注意:以位为单位为5M字节. SYS_MESSAGE_SIZE_LIMIT = x ...

  3. DAO与DTO

    DAO叫数据访问对象(data access object) DTO是数据传输对象(data transfer object) DAO通常是将非对象数据(如关系数据库中的数据)以对象的方式操纵.(即一 ...

  4. 富文本编辑器CKEditor的使用

    由于最近在架构一个pc端b/s结构的项目,项目中有个论坛模块,当用户发帖时,需要用到富文本编辑器,考虑了一下,决定使用CKEditor富文本编辑器,虽然现在问世的富文本编辑器很丰富,比如还有百度的UE ...

  5. ZOJ 2002 Copying Books 二分 贪心

    传送门:Zoj2002 题目大意:从左到右把一排数字k分,得到最小化最大份,如果有多组解,左边的尽量小. 思路:贪心+二分(参考青蛙过河). 方向:从右向左. 注意:有可能最小化时不够k分.如     ...

  6. Object类—复写equals方法,hashCode方法,toString方法

    Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. class Person extends Object { private int age; Person( ...

  7. PE格式第七讲,重定位表

    PE格式第七讲,重定位表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶何为重定位(注意,不是重定位表格) 首先, ...

  8. win10 uwp 自定义控件 SplitViewItem

    本文主要是因为汉堡菜单里面列出的菜单很多重复的图标和文字,我把它作为控件,因为是随便写,可能存在错误,如果发现了,请和我说或关掉浏览器,请不要发不良言论. 我们使用汉堡菜单,经常需要一个 需要一个图标 ...

  9. VisualStudio 合并代码文件

    如果有相同的类,一般可以使用 partial 让他写在多个文件,那么如何把多个文件合并?请看 MainWindow.xaml 和 MainWindow.xaml.cs 其中 代码文件被折叠,那么如何做 ...

  10. PHP 操作 进程时相关 信号的具体含义

    SIGQUIT    建立CORE文件终止进程,并且生成core文件SIGILL     建立CORE文件       非法指令SIGTRAP    建立CORE文件       跟踪自陷SIGBUS ...