一個容器例項中的多個程序
通常每個容器應該承載一個程序。如果你在一個容器中需要多個程序(例如,SSH 伺服器登入到正在執行的容器例項),你可以想到編寫自己的 shell 指令碼來啟動這些程序。在這種情況下,你必須自己處理 SIGNAL
處理(例如,將捕獲的 SIGINT
重定向到指令碼的子程序)。那不是你想要的。一個簡單的解決方案是使用 supervisord
作為容器根過程,它關注 SIGNAL
處理及其子程序的生命週期。
但請記住,這不是碼頭方式。要以 docker 方式實現此示例,你將登入 docker host
(容器執行的機器)並執行 docker exec -it container_name /bin/bahs
。這個命令會在 ssh 中為你開啟一個 shell。