docker学习-容器监控与日志管理

当Docker部署规模变大后,需要对容器进行监控,一般Docker自带几个监控命令ps、top和stats,然后是现在流行的开源监控工具Prometheus

Docker自带的监控子命令

ps

docker ps ,列j 6 j t - * P Z容器,方便查看当前的运行? 5 Z w v X Y 3容器,以下是命令语法与参数
语法

docker ps [l L k V 5 ^ -OPTIONS]
OPTIONS说明:

-a :显示所有的容器,包括未运行的。

-f :根据条件过滤显示的内容。

--format :指定返回值的模板文件。

-l :显示最近创建的容f 8 U O m I z X N器。

-n :列出最近创建O / { $ S I n u的n个容器。

--no-trunc :不截断输出。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。
docker学习-容器监控与日志管理

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

created(已创建)
restarti| L . ~ f y + } Png(重启中)
running(运行中)
removing(迁移中)
paused(暂停H v _ O # ]
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配# 5 . i Y O ? 5的容器名称。

新版; l 3 * : C的Docker提供了一个新命令dQ $ z wocker container ls,i 2 h _ T其作用和用法与docker container ps完全一致。不过ls的含义可能比ps更准确,所以推荐使用。

top

如果想知道某个容器运行了哪些进程,可+ 4 & 以执行docker containr : Z `ek I Ir top 命令,如下所示:
docker学习-容器监控与日志管理

命令后面还可以跟上linux操作系统ps命令的参数来显示特定的信息,比如-au,这样docker container top [容器名称] -au执行结果如下所示:
docker学习-容器监控与日志管理

stats

docker container stats 用于显示( w ] q z 9 8 Y M每个容器各种资源的使用情况

docker学习-容器监控与日志管理
默认会显示一个实时变化的列表,展示每个容器的cpu的使用率,内存和可用空间等。

如果容器启动的时候没有特别h h 6 : 3 ; q A c指定内存limit,stats命令这里Q L ^ ;会显示host内存的总量,但是这不意味着每个容器都能使用这么多内存
a 1 u ~ x n 8此之外,do9 Q W B { Ucker conJ ) * vtainer stats命令还会显示容器网络和磁. G ! b盘的IO数据,可以再sM g 1 m ^ 7 gtats命令后面指定容器的名称来显示某些容器的数据

docker学习-容器监控与日志管理

Docker logs

默认配置下 Docker 的日志功H , - l , f $能。

对于一个运行的容器,Docker 会将日志发送到 容器的 标准输出设备(STDOUT)和标准错误设备(STDERR),STDOUT 和 STDERR 实际上就是容器T $ N 6 R的控制台终端

如果要查看容器的日志,有两种方法:

at, ~ ; Q m ] t gtach 到该容器。

用 docker logs 命令查看日志。

ttach 的方法在实际使n j P用中不太方便,因为:

只能看到 ac / $ G !ttach 之后的日志,以前的日志不可见。

退出 attach 状态比较麻烦(Ctrl+p 然后 Ctrl+q 组合键),一不小心很容器将容器杀掉(比如按a g t R i W 3 } 9下 Ctrl+C)。D } ] 3 l ;

查看容器日志推荐的方法是用 docker logs 命令。

如下所示:

docker学习-容器监控与日志管理

dokcer logs能够打印自容器启动以来的完整日志,并且-f参数可以继续打印出新产生的日志,效l Y T K 5 p , _ *果与linux的tail -f一样