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