前言

在docker的整个生命周期中,超过70%的时间,我们都是在用docker进行运维工作, 查看docker的日志,是运维中的必会技能。

docker日志分为:

  • docker引擎日志
  • 应用日志

今天我们重点来讨论下docker的日志使用,我是沐风晓月,希望今天的内容对你有用。

一. docker的日志介绍

1.1 docker的引擎日志

Docker 引擎日志是指记录 Docker 引擎自身操作和事件的日志信息。这些日志包含了 Docker 引擎的启动、停止、容器创建与销毁、网络配置、镜像拉取等关键操作的详细记录。了解和分析 Docker 引擎日志对于故障排除、性能优化和安全监控非常重要

  • 引擎日志的访问
[root@mufeng41 ~]# journalctl  -u docker.service | more
-- Logs begin at 四 2022-12-08 19:36:33 CST, end at 日 2023-06-25 20:46:38 CST. --
619 08:32:41 mufeng41 systemd[1]: Starting Docker Application Container Engine...
619 08:32:41 mufeng41 dockerd[22686]: time="2023-06-19T08:32:41.411579628+08:00" level=info msg="Starting up"
619 08:32:41 mufeng41 dockerd[22686]: time="2023-06-19T08:32:41.438658996+08:00" level=info msg="Loading conta
iners: start."

1.2 docker的应用日志

在 Docker 中,有几种常见的日志驱动程序可用于容器的日志管理。以下是其中一些常见的日志驱动程序:

  • json-file:这是 Docker 默认的日志驱动程序。它将容器的标准输出(stdout)和错误输出(stderr)写入本地的 JSON 文件中。可以使用 docker logs 命令轻松地查看和获取容器的日志。

  • journald:该驱动程序将容器的日志发送到宿主机上运行的 systemd-journald 服务。journald 是现代 Linux 系统上的日志管理工具,它提供了强大的日志收集和查询功能。

  • syslog:syslog 驱动程序将容器的日志发送到宿主机上运行的 syslog 守护进程。从 syslog 守护进程可以将日志进一步发送到其他位置,如远程的 syslog 服务器。

  • fluentd:Fluentd 驱动程序通过 Fluentd 收集器将容器的日志路由到其他位置,如 Elasticsearch、MongoDB、Splunk 等。Fluentd 是一种可扩展的日志收集和转发系统,适用于大规模的分布式环境。

  • awslogs:awslogs 驱动程序将容器的日志发送到 AWS CloudWatch Logs 服务。这个驱动程序特定于 AWS 平台,它可以将容器的日志集成到 AWS 的日志分析和监控体系中。

  • gelf:GELF(Graylog Extended Log Format)驱动程序将容器的日志输出发送到支持 GELF 格式的日志管理系统,如 Graylog。GELF 提供了结构化的日志格式和更丰富的日志分析功能。

  • splunk:Splunk 驱动程序将容器的日志输出发送到 Splunk 日志管理系统。这允许集中存储、搜索和分析容器的日志,以提高应用程序的可观察性。

二. docker日志实战

2.1 查看默认的日志引擎

[root@mufeng41 ~]# docker info |grep Logging
 Logging Driver: json-file
[root@mufeng41 ~]#

可以看到默认使用的是json-file

如果要修改,可以修改文件:

@mufeng41 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://ywrd8tun.mirror.aliyuncs.com"]
}

在这个文件中增加:

“log-driver”:“json-file”

然后重新启动docker即可。

2.2 使用docker logs 命令查看容器的日志

[root@mufeng41 ~]# docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Aliases:
  docker container logs, docker logs

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m" for
                       42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m"
                       for 42 minutes)

云原生:深入掌握Docker日志管理:高效策略与最佳实践-LMLPHP

2.3 案例一

[root@mufeng41 ~]# docker run --name test -d busybox sh -c "while true; do $(echo date); sleep 1; done"
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
5cc84ad355aa: Pull complete 
Digest: sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Status: Downloaded newer image for busybox:latest
16fb794a5a7ef8f678665b41cee40e144b0b5d8d58e5f8362199b1bbf8df5626
[root@mufeng41 ~]# date
2023年 06月 25日 星期日 21:06:19 CST
[root@mufeng41 ~]# docker logs -f --until=2s test
Sun Jun 25 13:06:15 UTC 2023
Sun Jun 25 13:06:16 UTC 2023
Sun Jun 25 13:06:17 UTC 2023

总结

docker 的日志查询,最常用的是docker logs。 以上就是今天要分享的全部内容,你学会了吗。

06-26 06:19