在容器中,通常可以通过执行命令或利用第三方工具,获取当前容器中的数据并将数据呈现给用户。安装完成的Docker自带一些用于监控容器的子命令,这是Docker开发者为用户提供的容器监控方式。

监控命令

docker ps

dockerps命令是第4章中讲过的命令,用来查看容器状态,示例代码如下:

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED        STATUS                      PORTS     NAMES
7d649817c121   centos    "/bin/bash"               10 hours ago   Exited (0) 10 hours ago               peaceful_yalow
ee9bc9586288   centos    "/bin/bash"               24 hours ago   Exited (127) 24 hours ago             data-volume
50bfd04e5830   nginx     "/docker-entrypoint.…"   28 hours ago   Exited (137) 23 hours ago             test
d1eb81de80ec   centos    "/bin/bash"               32 hours ago   Exited (0) 23 hours ago               heuristic_blackburn

另外,通过 docker container ls命令也可以达到相同的效果,示例代码如下;

[root@docker_house ~]# docker container ls
CONTAINER ID   IMAGE      COMMAND                   CREATED       STATUS       PORTS                                       NAMES
295839b99791   registry   "/entrypoint.sh /etc…"   7 hours ago   Up 7 hours   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry-TLS

注意,若 docker container Is 命令执行失败,更新 Docker版本即可。

docker top命令

dockertp命令用于查看容器中的进程,示例代码如下:

[root@docker_house ~]# docker top 295
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                22180               22163               0                   12:03               ?                   00:00:06            registry serve /etc/docker/registry/config.yml

以上示例通过在dockertop命令中添加容器ID号查看到了容器内进程。
除此之外,还可以在命令中添加容器名称,达到相同的效果,示例代码如下:

[root@docker_house ~]# docker container top registry-TLS 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                22180               22163               0                   12:03               ?                   00:00:06            registry serve /etc/docker/registry/config.yml

在docker top 命令中添加参数即可显示特定的进程信息,此处以-u参数为例,示例代码如下:

[root@docker_house ~]# docker container top registry-TLS -u
USER                PID                 %CPU                %MEM                VSZ                 RSS                 TTY                 STAT                START               TIME                COMMAND
root                22180               0.0                 0.3                 122500              14844               ?                   Ssl                 12:03               0:06                registry serve /etc/docker/registry/config.yml

以上示例通过给docker top命令添加-u参数,将sysdig容器的进程信息以用户为主的格式显示出来。

docker stats命令

docker stats命令用于查询容器的各项资源消耗情况,示例代码如下:

[root@docker_house ~]# docker stats

CONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O     PIDS
295839b99791   registry-TLS   0.02%     7.719MiB / 3.682GiB   0.20%     805kB / 50.3kB   0B / 1.87MB   6

以上示例执行了docker stats命令,在终端通过一个动态列表显示出各个容器的资源使用情况,如CPU使用率、内存、容器网络等信息。在没有限制容器内存的情况下,此处将显示宿主机的内存。
此处的动态列表有一项明显的不足,就是只显示容器ID号,不显示容器名称。但只要在命令中添加容器名称,即可查看指定容器的信息,示例代码如下:

[root@docker_house ~]# docker stats registry-TLS 

CONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O     PIDS
295839b99791   registry-TLS   0.02%     7.719MiB / 3.682GiB   0.20%     805kB / 50.3kB   0B / 1.87MB   6
是一名喜欢每天折腾的咸鱼! 也是一名半退役的算竞摸鱼选手,参与过icpc,天梯赛,蓝桥等比赛. --------------------------------------------------- 百度 飞桨领航团-团长 Datawhale -鲸英助教团成员 上海人工智能实验室 书生·浦语实战营- 助教 --------------------------------------------------- 认证类: 华为 Harmony OS应用开发者高级认证, NISP 一级认证, H3C NE-RS网络工程师认证 --------------------------------------------------- 荣获奖项荣誉: 第十八届“挑战杯”全国大学生课外学术科技作品竞赛 “揭榜挂帅”专项赛-全国特等奖、 “美亚杯”第八届中国电子取证大赛 三等奖、 “蓝桥杯”国优、 中国高校计算机大赛-团体程序天梯赛 省高校一等奖、 “蓝桥杯”省一等奖、 H3C新华三杯 省三等奖、 中国移动“梧桐杯”大数据创新大赛 省三等奖、 百度 飞桨领航团 金牌团长
最后更新于 2024-03-09