查看容器或服务的日志

预计阅读时间:2分钟

docker logs命令显示正在运行的容器记录的信息。该 docker service logs命令显示参与服务的所有容器记录的信息。记录的信息和日志的格式几乎完全取决于容器的端点命令。

默认情况下,docker logsdocker service logs显示命令的输出,就像您在终端中以交互方式运行命令时所显示的一样。UNIX和Linux命令通常开在运行时间上三个I / O流,所谓的 STDINSTDOUTSTDERRSTDIN是命令的输入流,其中可能包括来自键盘的输入或来自另一个命令的输入。STDOUT通常是命令的常规输出,STDERR通常用于输出错误消息。默认情况下,docker logs显示命令的STDOUTSTDERR。要了解有关I / O和Linux的更多信息,请参阅 Linux文档项目中有关I / O重定向的文章

在某些情况下,docker logs除非采取其他步骤,否则可能不会显示有用的信息。

  • 如果您使用的日志记录驱动程序将日志发送到文件,外部主机,数据库或另一个日志记录后端,并且 禁用了“双重日志记录”,则docker logs可能不会显示有用的信息。
  • 如果您的映像运行的是非交互过程,例如Web服务器或数据库,则该应用程序可能会将其输出发送到日志文件而不是STDOUTSTDERR

在第一种情况下,您的日志将以其他方式处理,您可以选择不使用docker logs。在第二种情况下,官方nginx映像显示了一种解决方法,而官方Apachehttpd映像显示了另一种解决方法。

官方nginx图片,从创建符号链接/var/log/nginx/access.log/dev/stdout,从创建另一个符号链接/var/log/nginx/error.log/dev/stderr,覆盖日志文件,并导致日志而不是发送到相关的专用设备。请参阅 Dockerfile

官方httpd驱动程序更改了httpd应用程序的配置,以将其常规输出直接写入/proc/self/fd/1(为STDOUT),并将其错误写入/proc/self/fd/2(为STDERR)。请参阅 Dockerfile

下一步

码头工人日志记录