查看容器日志

docker logs命令显示正在运行的容器记录的信息。这docker service logs命令显示所有容器记录的信息 参与服务。记录的信息以及 log 几乎完全依赖于容器的 endpoint 命令。

默认情况下,docker logsdocker service logs显示命令的输出 就像在终端中以交互方式运行命令时显示的那样。Unix (英语) 而 Linux 命令通常在运行时打开三个 I/O 流,称为STDIN,STDOUTSTDERR.STDIN是命令的输入流,该 可能包括来自键盘的输入或来自其他命令的输入。STDOUT是 通常是命令的正常输出,而STDERR通常用于输出 错误消息。默认情况下,docker logs显示命令的STDOUTSTDERR.要了解有关 I/O 和 Linux 的更多信息,请参阅有关 I/O 重定向的 Linux 文档项目文章

在某些情况下,docker logs除非你采取 其他步骤。

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

在第一种情况下,您的日志会以其他方式处理,您可以选择不 使用docker logs.在第二种情况下,官方nginx图片显示一个 解决方法和官方 Apachehttpd图片显示了另一个。

官方nginximage 创建符号链接/var/log/nginx/access.log/dev/stdout,并创建另一个符号链接 从/var/log/nginx/error.log/dev/stderr、覆盖日志文件和 导致日志被发送到相关的特殊设备。请参阅 Dockerfile

官方httpddriver 更改httpdapplication 的配置设置为 将其正常输出直接写入/proc/self/fd/1(即STDOUT) 和 其错误设置为/proc/self/fd/2(即STDERR).请参阅 Dockerfile

后续步骤