如何在 Docker 容器中调试多个进程 运行?

How to debug multiple processes running in a Docker container?

我是 运行 一个 Docker 容器中的多进程应用程序实例,每个进程 运行 作为一个简单的守护进程。目前我无法调试容器中出现的任何运行时错误,因为 docker attach 经常挂起(并产生交错打印语句),而且 tmuxscreen 似乎都无法正常运行在容器中。此外,将每个单独进程的标准输出重定向到日志文件,如下所示:

python myfile.py 1>> mylogfile 2>&1 &

根本不起作用,因为我只在日志文件中看到警告。一个理想的解决方案是让 tmux 工作。您如何调试容器中的进程?

不要运行一个容器中的多个进程

出于您概述的所有原因。

使用监督

在 Docker 的早期,"don't run multiple processes!" 并不是什么大规则。 Supervisord 是推荐的类似 initd 的工具,用于在一个容器中处理多个服务。它可以尝试同时监视两者,并且可以正确处理日志记录。

使用docker exec调试

docker exec [-it] <container> <command> 允许您在 运行ning 容器上 运行 一个额外的命令。用它来获得 shell 并探索。