2014-07-11 123 views
2

我還沒有完全理解碼頭工作的方式。碼頭工人:將主機端口映射到多個碼頭集裝箱

我的情況是這樣的:

  • 我有一個Dockerfile是(對我來說這是8000
  • 我已經建立了使用此Dockerfile(圖像通過使用「泊塢窗構建暴露的端口-t test_docker搬運工運行-p 808X「)
  • 現在我用創建幾個容器 」: -d test_docker「
  • 在主機上調用它的IP與不同POR反應ts我在「碼頭運行」中分配了

這個EXPOSE命令在Dockerfile中做了什麼?我理解的是,碼頭工人守護進程本身處理的網絡連接,並同時呼籲「泊塢窗運行」我還告訴應該用什麼樣的形象?

感謝

回答

0

OK,我想我明白了原因。

如果您在應用程序中偵聽端口,則需要準確暴露此端口。例如。

HttpServer.bind('127.0.0.1', 8000).then((server) {...} 

將需要「EXPOSE 8000」。像這樣你可以在你的應用程序中聽幾個到幾個端口,但是需要將它們全部公開。

我對不對?

0

在dockerfile中顯示端口允許您使用docker run命令中的-P(請參閱here)標誌啓動容器。

一個簡單的使用案例可能是您在負載平衡服務器上使用nginx位於端口80上,並且它將負載平衡位於coreos docker服務器上的幾個docker conatiner上的流量。由於每個應用程序都使用相同的端口8000,因此您無法單獨獲取它們。因此,碼頭工程師會將每個容器映射到主機上的一個高度隨機且無衝突的端口。所以當你打到49805時,它將進入容器1s 8000,當你點擊49807時,它將進入容器2s 8000.

+0

請更新提供的鏈接。謝謝, – Vasif

相關問題