学而实习之 不亦乐乎

Docker 容器日志管理

2024-04-26 22:58:03

系统:Centos 7

软件:Docker 24.0.5

一、简介

Docker 容器日志是指容器在运行过程中产生的各种日志信息,包括错误、警告、信息等。Docker将所有容器的日志统一管理,方便用户对容器进行监控、故障排查和性能分析。

Docker 容器日志主要分为以下几类:

  • 控制台输出:容器的标准输出和标准错误输出。
  • 日志文件输出:容器的日志信息保存到文件中。
  • 系统日志输出:容器的日志信息保存到系统日志中。

二、Docker 容器日志的输出方式

Docker容器日志可以通过以下三种方式输出:

1、控制台输出

容器的标准输出和标准错误输出可以通过控制台输出。在运行容器时,可以使用 -t 和 -i 参数来分别开启终端和交互模式,从而实时查看容器的输出信息。

$ docker run -t -i ubuntu /bin/bash

2、日志文件输出

容器的日志信息可以保存到文件中,并通过挂载宿主机目录的方式进行管理。在运行容器时,可以使用 --log-driver 和 --log-opt 参数来指定日志输出的驱动和选项。

$ docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 -v /var/log:/log ubuntu /bin/bash

3、系统日志输出

容器的日志信息可以保存到系统日志中,可以通过配置 rsyslogd 或 syslog-ng 等工具来实现。在运行容器时,可以使用 --log-driver 和 --log-opt 参数来指定日志输出的驱动和选项。

$ docker run --log-driver syslog --log-opt syslog-address=tcp://127.0.0.1:514 ubuntu /bin/bash

三、Docker容器日志的查看和管理

Docker容器日志可以通过以下方式进行查看和管理:

1、查看容器日志

【1】 使用docker logs命令查看日志

使用 docker logs 命令可以查看容器的日志信息。

$ docker logs -f <container-id>

查看最后10行日志

$ docker logs -f <container-id> -n 10

查看从某个时间开始的日志

$ docker logs -f <container-id> --since "2023-10-16"
$ docker logs -f <container-id> --since "2023-10-16T08:08:10"

【2】查看容器内日志文件

容器的日志信息保存在容器的日志文件中,可以通过进入容器内部的方式查看日志文件。

$ docker exec -it <container-id> /bin/bash
$ tail -f /var/log/<log-file>

【3】在系统中查看日志文件

在操作系统中,可以找到 Docker 容器的位置,在此目录下有其运行日志,形如:container_id-json.log

在 Centos 下,Docker 24.0.5 的容器目录是在 /var/lib/docker/containers/ 目录下,可以通过容器ID进行查找。

2、管理容器日志

【1】设置日志输出格式

可以通过 --log-opt 参数来设置日志输出的格式,常见的格式有 json、text、journald 等。

$ docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 --log-opt labels=app-name my-app

【2】控制日志输出级别

可以通过 --log-opt 参数来控制日志输出的级别,常见的级别有 debug、info、warning、error、fatal 等。

$ docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 --log-opt labels=app-name --log-opt tag="my-tag" my-app

【3】定期清理日志文件

由于容器日志文件可能会占用大量磁盘空间,因此需要定期清理日志文件。可以使用 Docker 自带的 logrotate 工具来实现。

$ docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 --log-opt labels=app-name --log-opt tag=my-tag --log-opt compress my-app

四、Docker容器日志的监控和分析

监控和分析 Docker 容器日志可以使用工具来实行。

1、监控工具

 ELK Stack(Elasticsearch+Logstash+Kibana)等工具来监控 Docker 容器日志。ELK Stack 可以将 Docker 容器日志收集到 Elasticsearch 中,并使用 Kibana 对日志进行搜索和可视化。

2、分析Docker容器日志 可以使用 Splunk、Graylog、Logentries 等工具来分析 Docker 容器日志。这些工具可以对 Docker 容器日志进行分析和挖掘,并生成报告和统计数据。