2016-08-20 38 views
-1

我有一個prefork模型服務器。這意味着應用程序將啓動,在端口上綁定一個套接字,它們分叉X次,這樣每個孩子都可以共享相同的端口。在碼頭上移動prefork應用程序

我現在想將泊塢窗下此應用程序。 我的理解是一個docker實例應該只運行我的一臺服務器,以獲得更好的可用性。所以如果我想運行我的進程的5個實例,我應該運行5個docker實例,所有運行一次我的應用程序。 目前爲止我是否正確?

如果是的話,我的問題是,是有可能有我所有的碼頭工人場合的同一端口下的所有運行?

我同意,我可以使用反向代理,我映射端口範圍爲我服務,但我想如果可能避免這種情況。

+0

我不認爲你可以做,在「純」泊塢窗,但託管在泊塢窗情況下的應用,並利用HAProxy的他們也許彙總好主意。你甚至可以使用https://hub.docker.com/_/haproxy/與實例,使泊塢窗網絡。 –

回答

0

泊塢窗爲你的容器,其中過程可能會派生的兒童或者運行多線程的過程的命名空間。您可以輕鬆地在Docker容器中運行多進程應用程序,事實上,您可以隨時運行bash shell,然後在bash中運行任何其他cli命令。

唯一的要求是,你與docker run啓動過程發生的init Linux系統作爲PID 1.角色這也就意味着,如果你的PID 1退出,整個容器立即終止。所以你的主流程需要保持在前臺運行。另外,如果任何進程沒有被父母在退出時收回,並且他們進入殭屍狀態,他們將不會被主機操作系統的init自動清理(殭屍進程不會傳播到命名空間之外)。爲了解決這個問題, ,有喜歡TINI充當一個init更換容器內的項目。

+0

謝謝你,但是如果我想運行我的應用程序的5個實例,是不是更好在5個不同的碼頭上單獨運行它們,而不是在同一個碼頭中運行它們? –

+0

This vari因爲這種情況,但我不相信你所描述的情況。 – BMitch

+0

謝謝,你能解釋一下不同的情況嗎? –