运行 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>
然后,您会看到您的日志。
希望这对您有所帮助!
我最近拉取了一个 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>
然后,您会看到您的日志。
希望这对您有所帮助!