jgugugiug 发表于 2019-2-20 10:14:42

docker stats监控容器资源消耗

  在容器的使用过程中,如果能及时的掌握容器使用的系统资源,无论对开发还是运维工作都是非常有益的。幸运的是 docker 自己就提供了这样的命令:docker stats。
  默认输出
  docker stats 命令用来显示容器使用的系统资源。不带任何选项执行 docker stats 命令:
  ?
1$ docker statshttp://files.iyunv.net/file_images/article/201711/201711140900317.jpg
  默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:

  :以短格式显示容器的>  :CPU 的使用情况。
  :当前使用的内存和最大可以使用的内存。
  :以百分比的形式显示内存使用情况。
  :网络 I/O 数据。
  :磁盘 I/O 数据。
  :PID 号。
  只返回当前的状态
  如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态:
  ?
1$ docker stats --no-streamhttp://files.iyunv.net/file_images/article/201711/201711140900318.jpg
  这样输出的结果就不会变化了,看起来省劲不少。
  只输出指定的容器

  如果我们只想查看个别容器的资源使用情况,可以为 docker stats 命令显式的指定目标容器的名称或者是>  ?
1$ docker stats --no-stream registry 1493http://files.iyunv.net/file_images/article/201711/201711140900319.jpg

  当有很多的容器在运行时,这样的结果看起来会清爽一些。这里的 registry 和 1493 分别是容器的名称和容器的>
  细心的同学可能已经发现了,第一列不再显示默认的容器>  ?
1$ docker stats $(docker ps --format={{.Names}})http://files.iyunv.net/file_images/article/201711/2017111409003110.jpg

  用容器的名称替代>  格式化输出的结果

  我们在前面搞了点小手段把输出中的容器>  ?
1$ docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"http://files.iyunv.net/file_images/article/201711/2017111409003111.jpg
  上面的命令中我们只输出了 Name, CPUPerc 和 Memusage 三列。下面是自定义的格式中可以使用的所有占位符:

  .Container    根据用户指定的名称显示容器的名称或>  .Name         容器名称。

  .ID               容器>  .CPUPerc       CPU 使用率。
  .MemUsage内存使用量。
  .NetIO         网络 I/O。
  .BlockIO      磁盘 I/O。
  .MemPerc   内存使用率。
  .PIDs             PID 号。
  有了这些信息我们就可以完全按照自己的需求或者是偏好来控制 docker stats 命令输出的内容了。
  除了以 table 格式输出结果,还可以通过 format 选项输出 json 格式的结果:
  ?
12$ docker stats --no-stream --format \"{\"container\":\"{{ .Container }}\",\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"cpu\":\"{{ .CPUPerc }}\"}"http://files.iyunv.net/file_images/article/201711/2017111409003112.jpg
  总结
  通过 docker stats 命令我们可以看到容器使用系统资源的情况。这为我们进一步的约束容器可用资源或者是调查与资源相关的问题提供了依据。除了 docker 自带的命令,像 glances 等工具也已经支持查看容器使用的资源情况了,有兴趣的朋友可以去了解一下。

页: [1]
查看完整版本: docker stats监控容器资源消耗