运行 Nginx Docker 或 cat 日志时无法使用 -lt

Unable to use -lt when running Nginx Docker or cat logs

我最近拉取了一个 nginx 镜像:

docker pull nginx

我可以 运行 成功并转到 http://server_name 并查看 "Welcome to Nginx" 页面:

docker run -d -p 80:80 nginx

但是当我尝试检查日志时:

docker exec 6c79549e3eb4f6e5fc06f049b67814ac4560ce2cdd7cc6ae84b44b5ae09a9a05 cat /var/log/nginx/access.log

它只是挂起,没有任何输出。与错误日志相同。现在,如果我在同一个文件夹中创建一个 test.txt 文件并使用 docker exec 来(查看)cat 文件,我执行时不会挂起或出现任何问题。

即使我尝试在交互模式下 运行 它,它也会挂起:

docker run -i -t -p 80:80 nginx

终端再次挂在下一行,什么也没做,但它似乎可以工作,因为我可以访问 nginx 欢迎页面。

真的很困惑这是怎么回事,我试图搜索这个问题,但到目前为止还没有找到任何解决方案。如果无法查看日志,调试起来会非常困难 :) 此外,难道不应该将访问日志移动到 nginx 容器中的标准输出,因为按照惯例 docker 容器会记录到标准输出吗?

如果您进入容器 docker exec -it <container-id> /bin/bash 并检查日志位置 ls -la /var/log/nginx/,您将看到以下输出: lrwxrwxrwx 1 root root 11 Apr 30 23:05 access.log -> /dev/stdout lrwxrwxrwx 1 root root 11 Apr 30 23:05 error.log -> /dev/stderr 很明显,日志是写在 stdout 中的。您也可以尝试在容器内执行 cat access.log,它仍然没有显示任何内容。
现在,获取日志的正确方法是走出容器并执行 docker logs <container-id> 然后,您会看到您的日志。 希望这对您有所帮助!