如何debugging在Docker容器中运行的多个进程?

我在一个Docker容器中运行一个多进程应用程序实例,每个进程都作为一个简单的守护进程运行。 目前我不可能debugging容器中出现的任何运行时错误,因为docker attach经常挂起(并产生交错的打印语句),并且tmuxscreen都不能在容器中正常工作。 而且,将每个进程的stdoutredirect到一个日志文件,如下所示:

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

根本不工作,因为我只看到日志文件中的警告。 一个理想的解决scheme将获得tmux工作。 你如何debugging你的容器中的进程?

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

出于所有你列出的原因。

使用supervisord

在Docker的前几天,“不要运行多个进程!” 并不是一个很大的规则。 Supervisord是推荐的initd-like工具,用于在一个容器中处理多个服务。 它可以尝试监视两者,它可以正确处理日志。

使用docker exec来debugging

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