Docker attach 问题

226 天前
 Dffcc

前提:

Docker run --name mytom -p 8081:8080 -it tomcat:8.5.49

Docker attach tomcat

提问 1:

似乎只有起停进程(例如按 ctrl+c 或是 docker start mytom)才会有日誌,为何点击 Tomcat 所服务的网站,却没有 logs 透过 Docker attach tomcat 输出呢?

问了 Chatgpt4.0 后,依然给我奇怪的答案:

对于默认的 catalina.sh run ,Tomcat 通常会将日志写入到 logs/catalina.out 文件中,而不是输出到标准输出( STDOUT )。这意味着,即使你使用 docker attach 或 docker logs ,也看不到那些保存在 logs/catalina.out 文件中的日志内容。 如果你希望让 Tomcat 把日志输出到 STDOUT (从而让你通过 docker attach 或 docker logs 查看),你需要修改 Tomcat 的日志配置。

提问 2:

但事实就是起停进程会被 attach 输出,而 Docker attach 会记录标准输出( STDOUT ),哪里有错呢?

755 次点击
所在节点    Docker
9 条回复
LemonPrefect
225 天前
catalina 有多种日志,在 stdout 中看到的是 catalina 的启停日志,而不是 Tomcat 的访问日志。对于 Tomcat 访问日志来说,其默认配置如下,输出到文件中。

![]( https://img.erpweb.eu.org/imgs/2024/03/58da92e98313b2a8.png)

catalina 启动的日志是由启动脚本决定输出到 STDOUT 中的,与 Tomcat 的访问日志无关。如果你希望将访问日志输出到 STDOUT 中,可以修改 server.xml 来实现。
Dffcc
224 天前
@LemonPrefect

问题是如何从 Tomcat 的 Dockerfile 中,找到 STAOUT 相关文件,你怎么知道要输入图片上的指令呢?

cd/comf
ls
grep server.xml
cat server.xml|grep

https://github.com/docker-library/tomcat/blob/2922893bc6ccc52af5b663972b5918ce5fb9a841/8.5/jdk21/corretto-al2/Dockerfile
@LemonPrefect
LemonPrefect
224 天前
@Dffcc 这与 Docker 无关但与 Tomcat 有关。server.xml 是 Tomcat 提供的配置文件。

请参阅: https://tomcat.apache.org/tomcat-8.5-doc/config/context.html#Introduction
LemonPrefect
224 天前
PS. 因此你无法直接在 Dockerfile 中找到此文件,对于 Docker 来说他就是上层服务 src 。
Dffcc
223 天前
@LemonPrefect

https://www.bilibili.com/video/BV1qN411K7W3?t=202.0&p=52

这边讲师有说 Docker logs mytom3 ,没出现内容而离开的原因是因为用 bash 指令,跟这里的 Docker attach tomcat 是不是一样的道理,一切都看 CMD 指令?
LemonPrefect
223 天前
@Dffcc logs 输出的内容只取决于 STDOUT ,无论什么进程向 STDOUT 输出了,logs 就显示。这里显示了两遍 bash prompt ,是因为容器已经停止了,而在停止的最后时刻,留下了由原有的 entrypoint 输出的 prompt 。根本原因与是不是使用的 bash 一点关系都没有,如果这里的 entrypoint 换成我写的专门启动 catalina 的二进制程序,那你就会看到他输出的 log 。
Dffcc
223 天前
@LemonPrefect 不是 entrypoint ,应该是看 CMD 指令,我的意思是 STDOUT 指令也是看 CMD 吗? 还是只能像 Tomcat 从官网看?
LemonPrefect
223 天前
@Dffcc 看 entrypoint ,如果我实现的 entrypoint 是一个从来不向标准输出流输出任何东西的二进制文件,那你将看不见任何输出,无论你使用什么指令。
Dffcc
222 天前
@LemonPrefect 有点难理解,我需要学习更多相关的知识,谢谢你☺️

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1022151

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX