docker 日志配置 | 查看docker运行日志 30

作者 : 慕源网 本文共2721个字,预计阅读时间需要7分钟 发布时间: 2021-12-16 共405人阅读

Docker 日志简介

Docker Logging 有助于解决与 Docker 相关的错误。如果问题发生在我们的 Docker 环境中,它是一种调试问题的机制。例如,如果 Docker 守护程序或在 Docker 上运行的容器未正确启动,那么我们需要查看docker运行日志以了解导致问题的原因。Docker 有两个级别的日志记录,一个在 Docker 守护进程级别,另一个在容器级别。

docker 日志配置

Docker 有多种机制来记录正在运行的容器和服务的信息。docker为容器使用的每个 Docker 守护程序配置了一个默认的日志记录驱动程序。除了内置的日志驱动程序之外,还有日志驱动程序插件,我们可以实现它们来扩展和自定义 Docker 的日志记录功能。

我们需要更新 ‘daemon.json’ 文件以将默认日志驱动程序显式配置为任何其他日志记录驱动程序,’daemon.json’ 文件位于 Linux 主机上的 /etc/docker/ 或 c:\programdata\docker\ config\ 在 Windows 服务器主机上。如果日志驱动程序允许,我们可以将 daemon.json 文件中的选项设置为带有键“log-opts”的 json 对象。我们使用“docker log”命令来检查容器生成的日志。

1. 守护进程级别的Docker日志记录

守护进程级别的 docker 日志记录用于修复由 Docker 守护进程本身生成的问题和错误。

守护进程级别有四个可用的日志记录级别。

  • Debug:它提供了 Docker 守护进程生成的每一个可能的信息。
  • Info:它提供了 Docker 守护进程产生的所有类型的信息和错误。
  • Error:它提供了守护进程产生的所有错误。
  • Fatal:它只提供有关守护进程产生的所有致命错误的详细信息。

我们可以通过命令或编辑 ‘daemon.json’ 文件来启用 D​​ocker 守护进程日志记录。无论哪种情况,我们都需要停止 Docker 进程。

让我们先通过命令来做。所以首先我们需要使用以下命令停止 Docker 守护进程:

sudo service docker stop

或者

sudo systemctl stop docker

然后我们需要使用选项“-l”启动 Docker 守护进程并指定日志记录的级别。例如,调Debug、Info等。

代码:

dockerd -l debug &

输出:

代码:

dockerd -l  info &

输出:

解释:

在上面的两个快照中,我们可以看到当我们指定’debug’选项时,我们得到了包括调试信息在内的所有信息,但是当我们指定’info’选项时,里面没有’debug’日志,只有错误,警告,和信息。

我们还可以编辑位于 /etc/docker 的 daemon.json 文件来更改默认守护程序日志记录级别。

我们在 daemon.json 文件中添加“debug”:true 如下所示,并启动 Docker 守护进程。

代码:

cat /etc/docker/daemon.json

输出:

以下是启用调试级别守护程序日志记录之前的快照,默认日志记录级别设置为“info”,因为下面的快照中显示了调试日志。

代码:

dockerd

输出:

下面是通过编辑“daemon.json”文件启用调试级别守护程序日志记录后的快照,快照中有调试日志,但是我们再次使用与上面相同的命令。

代码:

dockerd

输出:

2. Docker 容器日志

容器级 Docker 日志记录用于调试与容器或服务相关的错误和问题。例如,在启动容器时出错或容器持续崩溃或卡在环回中等。容器级日志记录的默认日志驱动程序是“json-file”。我们可以再次配置“daemon.json”文件来更改默认设置。我们可以将 ‘log-driver’ 的值设置为日志驱动程序的名称,如果该驱动程序有不同的日志记录选项,我们还可以使用 ‘log-opts’ 键指定日志选项。

我们使用“docker info”命令来了解容器的默认日志驱动程序,如下所示。

代码:

docker info

输出:

解释:

在上面的快照中,我们看到 ‘json-file’ 被设置为默认的日志驱动程序。它还提供了有关插件的详细信息,例如 awslogs、fuentd、syslog 等。

让我们将默认日志驱动程序更改为“syslog”并在“daemon.json”文件中设置一些日志选项。

代码:

sudo cat /etc/docker/daemon.json

输出:

解释:

在上面的示例中,默认日志记录驱动程序已设置为“syslog”,其中包含不言自明的标签、标签和 env 等选项。我们需要重新启动 docker 以应用这些更改。首先停止 docker 守护进程,然后再次启动它。如果我们现在使用“docker info”命令进行检查,我们可以看到默认日志驱动程序已更改为“syslog”。

代码:

sudo systemctl stop docker
sudo systemctl start docker
docker info

输出:

我们还可以为每个容器配置日志驱动程序。我们可以通过在启动容器时传递 ‘–log-driver’ 标志来做到这一点。它绕过“daemon.json”文件中配置的默认日志驱动程序。

例子:

代码:

docker run -d --log-driver syslog alpine

输出:

解释:

在上面的示例中,启动了一个 alpine 容器并将容器配置为使用“syslog”作为日志驱动程序。如果我们想检查容器使用哪个日志驱动程序,我们检查容器,如快照所示,向下滚动并找到“HostConfig”键并查找“LogConfig”类型,这里是“syslog”。

我们可以使用“docker log”检查容器生成的日志。

语法

docker log <container_id or container_name>

例子:

代码:

docker run -d mysql
docker log 4b0ee

输出:

解释:

在上面的快照中,使用默认日志驱动程序创建了一个容器,如果我们检查容器的日志,它会向我们显示错误,现在我们可以理解为什么容器无法启动,因为它需要传递任何一个变量,而运行这个容器。因此,日志记录有助于解决问题。

结论

Docker 日志记录对于了解后台发生的事情非常有用和必要。如果我们使用不同的日志驱动程序,我们需要工具来读取这些日志,因为 Docker 日志无法读取所有其他日志驱动程序生成的日志。还有其他可用的插件,但是我们需要在“daemon.json”文件中正确配置它们,我们可以从这些插件提供商的官方网站上获取可用选项。

推荐文章

这是 Docker 日志记录指南。这里我们讨论Docker Logging的介绍以及日志是如何工作的,详细解释。

本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –

 


慕源网 » docker 日志配置 | 查看docker运行日志 30

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录