前言
在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. --
6月 19 08:32:41 mufeng41 systemd[1]: Starting Docker Application Container Engine...
6月 19 08:32:41 mufeng41 dockerd[22686]: time="2023-06-19T08:32:41.411579628+08:00" level=info msg="Starting up"
6月 19 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)
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。 以上就是今天要分享的全部内容,你学会了吗。