【问题标题】:How to debug multiple processes running in a Docker container?如何调试在 Docker 容器中运行的多个进程?
【发布时间】:2016-03-31 23:46:37
【问题描述】:

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

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

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

【问题讨论】:

  • 一般情况下,不要尝试在一个容器中运行多个进程。对于调试,您应该能够使用docker exec -it <yourcontainer> bash(或sh)在容器中获取shell

标签: docker containers tmux


【解决方案1】:

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

出于您列出的所有原因。

使用supervisord

在 Docker 的早期“不要运行多个进程!”没有这么大的规则。 Supervisord 是推荐的类似 initd 的工具,用于在一个容器中处理多个服务。它可以尝试监视两者,并且可以正确处理日志记录。

使用docker exec进行调试

docker exec [-it] <container> <command> 允许您在正在运行的容器上运行额外的命令。用它来获取外壳并进行探索。

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 2016-04-06
    • 1970-01-01
    • 2020-05-08
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多