查看容器日志
该docker logs命令显示正在运行的容器记录的信息。该
docker service logs命令显示参与服务的所有容器记录的信息。记录的信息和日志的格式几乎完全取决于容器的端点命令。
默认情况下,docker logsordocker service logs显示命令的输出,就像在终端中以交互方式运行命令时显示的那样。 Unix 和 Linux 命令在运行时通常会打开三个 I/O 流,称为
STDIN、STDOUT和STDERR。STDIN是命令的输入流,可能包括来自键盘的输入或来自另一个命令的输入。STDOUT通常是命令的正常输出,STDERR通常用于输出错误消息。默认情况下,docker logs显示命令的STDOUT和
STDERR。要了解有关 I/O 和 Linux 的更多信息,请参阅
有关 I/O 重定向的 Linux 文档项目文章。
在某些情况下,docker logs除非您采取其他步骤,否则可能不会显示有用的信息。
- 如果您使用
将日志发送到文件、外部主机、数据库或其他日志记录后端的
日志记录驱动程序,并且禁用了“双重日志记录”
,
docker logs则可能不会显示有用的信息。 - 如果您的映像运行非交互式进程(例如 Web 服务器或数据库),则该应用程序可能会将其输出发送到日志文件而不是
STDOUT和STDERR。
在第一种情况下,您的日志会以其他方式处理,您可以选择不使用docker logs。在第二种情况下,官方nginx映像显示了一种解决方法,官方 Apachehttpd映像显示了另一种解决方法。
官方镜像创建了一个从
到 的nginx符号链接,并创建了另一个从到 的符号链接,覆盖日志文件并使日志发送到相关的特殊设备。请参阅
Dockerfile。/var/log/nginx/access.log/dev/stdout/var/log/nginx/error.log/dev/stderr
官方httpd驱动程序更改httpd应用程序的配置,将其正常输出直接写入/proc/self/fd/1(即STDOUT),将错误写入/proc/self/fd/2(即STDERR)。请参阅
Dockerfile。
下一步
- 配置 日志记录驱动程序。
- 编写一个 Dockerfile。