在容器中,通常可以通过执行命令或利用第三方工具,获取当前容器中的数据并将数据呈现给用户。安装完成的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
Comments NOTHING