一個容器例項中的多個程序

通常每個容器應該承載一個程序。如果你在一個容器中需要多個程序(例如,SSH 伺服器登入到正在執行的容器例項),你可以想到編寫自己的 shell 指令碼來啟動這些程序。在這種情況下,你必須自己處理 SIGNAL 處理(例如,將捕獲的 SIGINT 重定向到指令碼的子程序)。那不是你想要的。一個簡單的解決方案是使用 supervisord 作為容器根過程,它關注 SIGNAL 處理及其子程序的生命週期。

但請記住,這不是碼頭方式。要以 docker 方式實現此示例,你將登入 docker host(容器執行的機器)並執行 docker exec -it container_name /bin/bahs。這個命令會在 ssh 中為你開啟一個 shell。