Docker轻松入门教程

Docker 容器监控,这四个命令你必须知道!

2024-04-13  本文已影响0人  字节码在跳舞
  1. docker logs 洞察容器内部活动

  2. docker top 透视容器进程世界

  3. docker stats全方位资源监控

  4. docker inspect容器的详细档案

今天要介绍命令均服务于容器运行状态的观察、诊断和性能分析,通过获取日志输出、进程列表和资源使用统计,可以帮助用户排查容器内部的问题、优化资源分配或进行容量规划。由于它们聚焦于容器运行时的监控与调试,合并在同一起介绍有利于形成完整的监控视角。

1. docker logs洞察容器内部活动

docker logs 命令在容器运维、故障排查、监控告警、审计合规、性能分析、业务洞察、开发测试以及容器生命周期管理等多个方面发挥着核心作用,是管理和理解 Docker 容器运行状态的重要工具。

➜  ~ docker run -d -p 3000:3000 --name hello-go hello-go:default
5d301eb6b03f5c6397096fb6efb4193f9970a876a93fbf3a16bf26249fa79efb
➜  ~ docker logs hello-go
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
[GIN-debug] GET    /ping                     --> main.main.func2 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :3000
[GIN] 2024/04/13 - 04:06:33 | 200 |      33.754µs |   192.168.31.47 | GET      "/"
[GIN] 2024/04/13 - 04:06:33 | 404 |         903ns |   192.168.31.47 | GET      "/favicon.ico"

运行一个hello-go容器,-d后台运行,-p 3000:3000宿主机3000与容器内3000映射,--name hello-go命名容器为hello-go,最后跟hello-go:default指定我们启动容器所基于的镜像。

通过命令docker logs [容器名称 or 容器id],可以查看容器内应用的运行日志,方便诊断应用运行期间的问题。应用日志文件会写入日志文件进行存储,建议使用挂在卷的方式持久化存储,防止因容器停止或删除,丢失数据。

可以在加-f,用于实时跟踪指定容器的日志输出,实时打印容器新增的日志条目。docker logs hello-go -f

2. docker top透视容器进程世界

docker top 命令主要用于实时监控容器内部进程状态、资源使用情况,以及进行故障排查、安全审计、资源分配优化、自动化监控等任务,是管理和运维 Docker 容器过程中必不可少的诊断和分析工具。

➜  ~ docker top hello-go
UID                 PID                 PPID                C                   STIME               TTY
TIME                CMD
root                1232                1213                0                   00:06               ?
00:00:00            ./app

使用docker top hello-go命令,根据输出容器内部只有一个运行中的进程(PID 为 1232),该进程以 root 用户身份运行,其父进程为 PID 1213。进程启动于6分钟前,未关联任何终端,且自启动以来未显著占用CPU时间。进程的主要任务是执行当前目录下的 app 可执行文件。

输出解释

3. docker stats全方位资源监控

docker stats 命令是监控容器资源使用情况、进行性能分析与调优、容量规划、故障排查、智能调度、合规审计以及自动化运维的核心工具,对于有效管理大规模容器化环境、保障服务质量和降低成本具有重要意义。会显示指定容器(或所有正在运行的容器)的 CPU、内存、网络和磁盘 I/O 的使用统计信息。

使用命令docker stats hello-go

➜  ~ docker stats hello-go
CONTAINER ID   NAME       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O     PIDS
5d301eb6b03f   hello-go   0.00%     8.191MiB / 3.823GiB   0.21%     6.64kB / 4.04kB   7.11MB / 0B   6

输出解释

  1. CONTAINER ID: 容器的唯一标识符,一个长字符串,如 5d301eb6b03f
  2. NAME: 容器的名称,如 hello-go。这是您在创建容器时通过 --name 参数指定的名称,或者 Docker 自动赋予的名称。
  3. CPU %: 容器当前使用的 CPU 占比。这里始终显示为 0.00%,说明在采样时刻,容器几乎未使用 CPU 资源。
  4. MEM USAGE / LIMIT: 容器当前使用的内存(MEM USAGE)及其内存限制(LIMIT)。如 8.191MiB / 3.823GiB 表示容器使用了 8.191 MiB 内存,其内存限制为 3.823 GiB。后面的 0.21% 是内存使用量相对于限制的百分比,说明容器的内存使用非常低。
  5. NET I/O: 容器的网络输入(I/O)和输出(O)流量。如 6.64kB / 4.04kB 表示容器接收了 6.64 kB 的数据,发送了 4.04 kB 的数据。这些值都很小,说明容器在网络通信方面几乎没有活动。
  6. BLOCK I/O: 容器对存储(磁盘)的读取(I/O)和写入(O)量。如 7.11MB / 0B 表示容器向磁盘写入了 7.11 MB 的数据,没有从磁盘读取数据。写入量稍大,但总体来看,容器的磁盘活动也相当有限。
  7. PIDS: 容器内当前运行的进程数。这里始终显示为 6,表示容器内部有 6 个进程正在运行。

综上所述,docker logsdocker topdocker stats这三个命令构成了Docker容器日志与监控的核心工具集,分别从日志输出、进程信息和资源使用三个维度为运维人员提供了全面的容器观测手段。熟练运用这些命令,不仅能提升日常运维效率,还能在问题发生时迅速定位根源,确保容器化环境的稳定运行和高效利用。实现容器监控,为容器化应用的长期稳健运行保驾护航。

4. docker inspect容器的详细档案

docker inspect 命令是Docker容器管理中的一个重要工具,用于获取指定容器的详细配置、状态及元数据信息。这些信息以JSON格式输出,包含容器的创建参数、运行状态、网络配置、存储挂载、资源限制、环境变量等诸多细节。

以下是使用 docker inspect 命令查询 hello-go 容器详细信息的示例:

➜  ~ docker inspect hello-go

在这条命令中,hello-go 是您要查询详细信息的容器名称或ID。执行命令后,Docker 会返回一个详细的JSON对象,包含容器的所有相关信息。由于JSON输出通常较为冗长且结构化,不在展示,请运行命令查看。

通过 docker inspect -f '{{json .<field>}}' <container> 可以只输出指定字段的信息。

例如,查询容器IP地址:docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' hello-go

输出解释

综上所述,docker logsdocker topdocker statsdocker inspect这四个命令构成了Docker容器日志与监控的核心工具集,分别从日志输出、进程信息和资源使用、容器的详尽配置信息四个维度为运维人员提供了全面的容器观测手段。熟练运用这些命令,不仅能提升日常运维效率,还能在问题发生时迅速定位根源,确保容器化环境的稳定运行和高效利用。实现容器监控,为容器化应用的长期稳健运行保驾护航。

忍不住要加个关注!不是我吹,但你会后悔没关注的!

上一篇 下一篇

猜你喜欢

热点阅读