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

ale*_*olk 8 nginx hang cat docker

我最近拉了一张nginx图片:

docker pull nginx
Run Code Online (Sandbox Code Playgroud)

我可以成功运行它并转到http:// server_name并查看"欢迎使用Nginx"页面:

docker run -d -p 80:80 nginx
Run Code Online (Sandbox Code Playgroud)

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

docker exec 6c79549e3eb4f6e5fc06f049b67814ac4560ce2cdd7cc6ae84b44b5ae09a9a05 cat /var/log/nginx/access.log
Run Code Online (Sandbox Code Playgroud)

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

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

docker run -i -t -p 80:80 nginx
Run Code Online (Sandbox Code Playgroud)

终端再次挂起在下一行无所事事,但它似乎工作,因为我可以访问nginx欢迎页面.

真的很困惑,我试图寻找这个问题,但到目前为止还没有找到任何解决方案.无法查看日志,调试将非常困难:)也不应该将访问日志移动到nginx容器中的stdout,因为通过docker containers登录到stdout?

Sab*_*bin 14

如果你进入容器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> 然后,您将看到您的日志.希望这可以帮助!