命令:
docker container stats
描述:
显示容器资源使用的状态(实时)
用法:
docker container stats [OPTIONS] [CONTAINER...]
别名:
docker stats(docker的一些命令可以简写,docker stats就等同于docker container stats)
stats到底可以显示什么,我们先来看看运行效果如何再来说话。
docker stats
可以看到不加任何选项,stats会实时显示出所有运行中的容器状态。ctrl+c可以退出。
这是在我的华为云上运行的两个应用,wordpress和mysql,从列名上可以看出,stats会依次显示CONTAINER ID、NAME、CPU %、MEM USAGE / LIMIT、MEM %、NET I/O、BLOCK I/O和PIDS。
名词解释
列名 | 描述 |
---|---|
CONTAINER ID 和NAME | 容器ID和名称 |
CPU %和MEM % | 容器正在使用的宿主机CPU和内存的百分比。 |
MEM USAGE / LIMIT | 容器正在使用的总内存,以及它被允许使用的总内存量。 |
NET I/O | 容器通过其网络接口接收和发送的数据量。 |
BLOCK I/O | 容器在宿主机上的块设备上写入和读取的数据量。 |
PIDs | 容器创建的进程或线程数 |
选项OPTIONS
我们再来看看stats都有哪些选项
选项 | 描述 |
---|---|
-a,--all | 显示所有容器状态(不加这个选项只显示正在运行中的容器) |
--format | 使用自定义模板格式化输出: ‘table’:以表格格式打印输出,包含列标题(默认) ‘table TEMPLATE’:使用给定的Go模板以表格格式打印输出 ‘json’:以JSON格式打印 ‘TEMPLATE’:使用给定的Go模板打印输出。 |
--no-stream | 禁用实时数据流,相当于对容器状态进行一次截图 |
--no-trunc | 不进行截断输出 |
对于选项,我们一个个进行实战操作,从实战中了解stats选项的用法。
-a,--all
显示所有容器状态(不加这个选项只显示正在运行中的容器)。
下面是我阿里云上所有的容器。其中redis是运行状态,另两个ubuntu是退出状态。
执行命令
docker stats --all
可以看到,运行中的redis实时显示CPU,内存等占比,而ubuntu占比都是0。
--format
使用自定义模板格式化输出:
‘table’:以表格格式打印输出,包含列标题(默认)
‘table TEMPLATE’:使用给定的Go模板以表格格式打印输出
‘json’:以JSON格式打印 ‘TEMPLATE’:使用给定的Go模板打印输出。
下面只查看单独运行的容器my-redis,使用json的格式输出
docker stats --format json my-redis
可以看出,终端实时显示容器运行状态,但是以json格式输出的。结果如下:
另外,我们还可以自定义控制输出。下表是格式占位符
占位符 | 描述 |
---|---|
.Container | 容器名称或ID |
.Name | 容器名称 |
.ID | 容器ID |
.CPUPerc | CPU百分比 |
.MemUsage | 内存使用情况 |
.NetIO | 网络IO |
.BlockIO | 块IO |
.MemPerc | 内存百分比(不适用于windows) |
.PIDs | 进程数(不适用于windows) |
因为docker的底层是Go语言,因此它的格式也支持Go模板的格式。
比如我们想只查看容器、CPU和内存百分比,我们可以这样设置:
docker stats --format "table {{.Name}}/t{{.CPUPerc}/t{{.MemPerc}}}"
结果如下图所示:
备注:上述table如果不输入,将不会显示标题栏,排版也不成样子了。会是如下样子:
--no-stream
禁用实时数据流,相当于对容器状态进行一次截图,只显示当前时刻容器运行时的状态。
还是先上命令
docker stats --no-stream
结果如下。状态信息不再实时显示,直接回到终端输入。
--no-trunc
不进行截断输出。
一些信息,为了美观,默认会进行截断,比如CONTAINER ID列,使用这个命令可以将信息全部输出,不截断。
docker stats --no-trunc
可以看到,容器ID列,输出了全部容器ID。