查看容器或服务的日志
预计阅读时间:2分钟
该docker logs
命令显示正在运行的容器记录的信息。该
docker service logs
命令显示参与服务的所有容器记录的信息。记录的信息和日志的格式几乎完全取决于容器的端点命令。
默认情况下,docker logs
或docker service logs
显示命令的输出,就像您在终端中以交互方式运行命令时所显示的一样。UNIX和Linux命令通常开在运行时间上三个I / O流,所谓的
STDIN
,STDOUT
和STDERR
。STDIN
是命令的输入流,其中可能包括来自键盘的输入或来自另一个命令的输入。STDOUT
通常是命令的常规输出,STDERR
通常用于输出错误消息。默认情况下,docker logs
显示命令的STDOUT
和
STDERR
。要了解有关I / O和Linux的更多信息,请参阅
Linux文档项目中有关I / O重定向的文章。
在某些情况下,docker logs
除非采取其他步骤,否则可能不会显示有用的信息。
- 如果您使用的日志记录驱动程序将日志发送到文件,外部主机,数据库或另一个日志记录后端,并且
禁用了“双重日志记录”,则
docker logs
可能不会显示有用的信息。 - 如果您的映像运行的是非交互过程,例如Web服务器或数据库,则该应用程序可能会将其输出发送到日志文件而不是
STDOUT
和STDERR
。
在第一种情况下,您的日志将以其他方式处理,您可以选择不使用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。
下一步
- 配置日志记录驱动程序。
- 编写一个Dockerfile。