一个容器实例中的多个进程

通常每个容器应该承载一个进程。如果你在一个容器中需要多个进程(例如,SSH 服务器登录到正在运行的容器实例),你可以想到编写自己的 shell 脚本来启动这些进程。在这种情况下,你必须自己处理 SIGNAL 处理(例如,将捕获的 SIGINT 重定向到脚本的子进程)。那不是你想要的。一个简单的解决方案是使用 supervisord 作为容器根过程,它关注 SIGNAL 处理及其子进程的生命周期。

但请记住,这不是码头方式。要以 docker 方式实现此示例,你将登录 docker host(容器运行的机器)并运行 docker exec -it container_name /bin/bahs。这个命令会在 ssh 中为你打开一个 shell。