
首先我们会讨论 Docker 自带的几个监控子命令:ps、top、stats。然后是几个功能更强的开源监控工具 sysdig、Weave Scope、cAdvisor 和 Prometheus 。最后我们在对这几个工具做一个对比。
docker container ps
查看当前运行的容器,下面三个命令的效果是完全一样的,加上 -a 可以查看没有运行的容器
root@host1:~# docker container ls --help
Usage: docker container ls [OPTIONS]
List containers
Aliases:
ls, ps, list
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display numeric IDs
-s, --size Display total file sizes
root@host1:~# docker container ps --help
Usage: docker container ls [OPTIONS]
List containers
Aliases:
ls, ps, list
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display numeric IDs
-s, --size Display total file sizes
root@host1:~# docker ps --help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display numeric IDs
-s, --size Display total file sizes
root@host1:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b89ca1da78c3 busybox "sh" About a minute ago Up About a minute sad_sanderson
7874b10cb1d4 httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp keen_yalow
root@host1:~# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b89ca1da78c3 busybox "sh" About a minute ago Up About a minute sad_sanderson
7874b10cb1d4 httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp keen_yalow
root@host1:~# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b89ca1da78c3 busybox "sh" About a minute ago Up About a minute sad_sanderson
7874b10cb1d4 httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp keen_yalow
root@host1:~#
root@host1:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07373028ad05 busybox "sh" About a minute ago Exited (0) About a minute ago stoic_jepsen
b89ca1da78c3 busybox "sh" About a minute ago Up About a minute sad_sanderson
7874b10cb1d4 httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp keen_yalow
root@host1:~# docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07373028ad05 busybox "sh" About a minute ago Exited (0) About a minute ago stoic_jepsen
b89ca1da78c3 busybox "sh" About a minute ago Up About a minute sad_sanderson
7874b10cb1d4 httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp keen_yalow
root@host1:~# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07373028ad05 busybox "sh" About a minute ago Exited (0) About a minute ago stoic_jepsen
b89ca1da78c3 busybox "sh" 2 minutes ago Up 2 minutes sad_sanderson
7874b10cb1d4 httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp keen_yalow
docker container top container
如果想知道某容器运行了哪些进程,可以执行 docker top
还可以在最后面跟上linux中ps的参数 -aux
root@host1:~# docker top --help
Usage: docker top CONTAINER [ps OPTIONS]
Display the running processes of a container
root@host1:~# docker container top --help
Usage: docker container top CONTAINER [ps OPTIONS]
Display the running processes of a container
root@host1:~# docker run -d --name lamp mattrayner/lamp
b67aded0f855a3d02c3b19539667a76ca88fe927d5ade9322d94f7cb0a0a0d82
root@host1:~# docker container top lamp
UID PID PPID C STIME TTY TIME CMD
root 22808 22789 0 09:26 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -n
root 23408 22808 0 09:27 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
root 23409 22808 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23811 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23812 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23815 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23817 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23818 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
999 23826 23408 1 09:27 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
root@host1:~# docker top lamp
UID PID PPID C STIME TTY TIME CMD
root 22808 22789 0 09:26 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -n
root 23408 22808 0 09:27 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
root 23409 22808 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23811 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23812 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23815 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23817 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
usera 23818 23409 0 09:27 ? 00:00:00 apache2 -D FOREGROUND
999 23826 23408 1 09:27 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
root@host1:~# docker top lamp -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 22808 0.1 0.9 51188 18704 ? Ss 09:26 0:00 /usr/bin/python /usr/bin/supervisord -n
root 23408 0.0 0.0 4504 1632 ? S 09:27 0:00 /bin/sh /usr/bin/mysqld_safe
root 23409 0.0 1.5 524236 32268 ? S 09:27 0:00 apache2 -D FOREGROUND
usera 23811 0.0 0.5 524268 10496 ? S 09:27 0:00 apache2 -D FOREGROUND
usera 23812 0.0 0.5 524268 10496 ? S 09:27 0:00 apache2 -D FOREGROUND
usera 23815 0.0 0.5 524268 10496 ? S 09:27 0:00 apache2 -D FOREGROUND
usera 23817 0.0 0.5 524268 10496 ? S 09:27 0:00 apache2 -D FOREGROUND
usera 23818 0.0 0.5 524268 10496 ? S 09:27 0:00 apache2 -D FOREGROUND
999 23826 0.1 10.1 1757648 207788 ? Sl 09:27 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
docker container stats
该命令用于显示每个容器各种资源的使用情况,默认会显示一个实时变化的列表,展示每个容器的CPU、MEM的使用率和可用量,还有网络和IO的情况。
ps:容器启动时如果没有特别指定内存 limit 、stats命令会显示host的内存总量,但这并不意味着每个容器都能使用到这么多大的内存。
我们还可以查看指定容器的性能,只需在后面指定容器的名字即可,可以是一个,也可以是多个。
root@host1:~# docker stats --help
Usage: docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
root@host1:~# docker container stats --help
Usage: docker container stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
root@host1:~# docker container stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b67aded0f855 lamp 0.04% 206.7MiB / 1.953GiB 10.34% 648B / 0B 4.61MB / 398MB 35
3c9c0f060dd0 admiring_bohr 0.04% 200.9MiB / 1.953GiB 10.05% 648B / 0B 60.6MB / 375MB 35
b89ca1da78c3 sad_sanderson 0.00% 56KiB / 1.953GiB 0.00% 648B / 0B 0B / 0B 1
7874b10cb1d4 keen_yalow 0.00% 7.566MiB / 1.953GiB 0.38% 1.3kB / 0B 0B / 0B 82
root@host1:~# docker container stats lamp admiring_bohr
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b67aded0f855 lamp 0.04% 206.7MiB / 1.953GiB 10.34% 648B / 0B 4.61MB / 398MB 35
3c9c0f060dd0 admiring_bohr 0.04% 209.1MiB / 1.953GiB 10.45% 648B / 0B 60.6MB / 375MB 35
ps、top、stats这几个命令是docker 自带的,有点是运行方便,很适合想快速了解容器运行状态的场景。缺点是输出的数据有限,而且都是实时数据,无法反应历史变化和趋势。
- 第 10 章 容器监控 - 078 - Docker 最常用的监控方案
Docker 最常用的监控方案 当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. Docker 自带的几个监控子命令: ps .top .stats 功能更 ...
- Docker 最常用的监控方案 - 每天5分钟玩转 Docker 容器技术(78)
当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. 在本章中,我们将讨论几个目前比较常用的容器监控工具和方案,为大家构建自己的监控系统提供参考. 首先我们会讨 ...
- docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)
=============================================== 2018/7/8_第1次修改 ccb_warlock === ...
- Work 4(通知类) (2019.04.25)
- centos7下安装docker(17.5docker监控的总结对比)
到现在为止,我已经学习了docker自带的监控方案:ps/ls/top/stats,以及sysdig,weave scope,cadvisor,prometheus多种监控工具,现在做个总结和比较 部 ...
- docker管理监控方案
docker相关管理可分为四类:docker基础功能.docker监控.docker集群管理和docker系统认证管理.docker管理的基础或信息来源都是docker命令行或docker API. ...
- 斌哥的 Docker 进阶指南—监控方案的实现
过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...
- 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)
前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...
- 086、一张表搞定各种Docker监控方案(2019-05-08 周三)
参考https://www.cnblogs.com/CloudMan6/p/7736176.html 前面已经学习了 ps/top/stats.Sysdig.Weave Scope .cAdvi ...
随机推荐
- [FTP]通过FileZilla在阿里云主机上搭建ftp服务器
前一阵子租了一台服务器主机来玩,正好周末有时间研究了一下怎么搭建ftp server. 准备.首先要下载filezilla client和filezilla server, 下载地址: server: ...
- WSUS补丁下载速度慢解决办法
windows 2008r2 如果是 WSUS 3.0并使用 Windows Internal Database(默认安装) %programfiles%\Update Services\Setup\ ...
- Webdriver之API详解(2)
前言:今天继续上一篇文章https://www.cnblogs.com/linuxchao/p/linuxchao-selenium-apione.html分享selenium' webdriver ...
- 我的第一个python web开发框架(39)——后台接口权限访问控制处理
前面的菜单.部门.职位与管理员管理功能完成后,接下来要处理的是将它们关联起来,根据职位管理中选定的权限控制菜单显示以及页面数据的访问和操作. 那么要怎么改造呢?我们可以通过用户的操作步骤来一步步进行处 ...
- Bloom Filter(布隆过滤器)如何解决缓存穿透
本文摘抄自我的微信公众号"程序员柯南",欢迎关注!原文阅读 缓存穿透是什么? 关于缓存穿透,简单来说就是系统处理了大量不存在的数据查询.正常的使用缓存流程大致是,数据查询先进行缓存 ...
- 随心测试_数据库_003 <数据库存储结构>
接上篇:了解了_数据库系统组成,继续理解必备知识点:数据库存储_逻辑结构 快速理解 数据存储结构:数据库系统_数据库_表 1. 理解什么是数据库 数据库发展:大致由 人工管理.文件系统.数据库系统(高 ...
- python-三级菜单-67
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': ...
- Python 原生协程------asyncio
协程 在python3.5以前,写成的实现都是通过生成器的yield from原理实现的, 这样实现的缺点是代码看起来会很乱,于是3.5版本之后python实现了原生的协程,并且引入了async和aw ...
- 一、PHP概述 - PHP零基础快速入门
1) PHP 可以用来做什么? 我简单举几个例子: 网站建设: 微信公众号,微信小程序,小游戏的后端接口: 小工具类. 别着急,可能会觉得不知所云.简单来讲,PHP 可以编写计算机程序.程序的作用,简 ...
- 写一个Python 1、通过select实现的最简单的web框架2、通过wsgiref实现的web框架
#!/usr/bin/env python # -*- coding: utf- -*- import socket import select class MyRequest: "&quo ...