我的Docker在其 vhost.conf
<VirtualHost *:80>
// ...(snipped)
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
通过以下方式查看 docker exec
在 /var/log/apache
,做 ls -l
显示。
access.log -> /dev/stdout
error.log -> /dev/stderr
这是什么意思,可以查看他们的内容吗?
docker logs
的容器上会显示出这个日志输出。
/dev/stdout
和 /dev/stderr
是特殊的 "文件",它们实际上分别指向当前进程的标准输出和错误通道(它们本身应该是指向 /proc/self/fd/1
和 /proc/self/fd/2
). 除非有什么原因导致它们被重定向到其他地方,否则这将成为容器的主要输出,而这将被Docker的内部日志子系统捕获。
如果你想在你的本地系统上捕获这些具体的文件,你可以将本地目录绑定挂载在 /var/log/apache
(带 docker run -v
选项或Docker Compose ports:
选项)。) 这将导致一个(最初是空的)目录在容器中隐藏该目录的内容,当HTTP守护进程写出它的日志时,它们将作为真实的文件出现在与主机共享的目录中。
你不应该需要 docker exec
在正常运行中。