一个容器实例中的多个进程
通常每个容器应该承载一个进程。如果你在一个容器中需要多个进程(例如,SSH 服务器登录到正在运行的容器实例),你可以想到编写自己的 shell 脚本来启动这些进程。在这种情况下,你必须自己处理 SIGNAL
处理(例如,将捕获的 SIGINT
重定向到脚本的子进程)。那不是你想要的。一个简单的解决方案是使用 supervisord
作为容器根过程,它关注 SIGNAL
处理及其子进程的生命周期。
但请记住,这不是码头方式。要以 docker 方式实现此示例,你将登录 docker host
(容器运行的机器)并运行 docker exec -it container_name /bin/bahs
。这个命令会在 ssh 中为你打开一个 shell。