2016-11-07 131 views
2

我使用docker羣模式運行docker swarm。假設我有4個節點,1個經理,3個工人。該主機名是:將服務容器的主機名設置爲主機的主機名

  • manager0
  • worker0
  • worker1
  • worker2

global模式啓動的服務,讓每一個節點都運行該服務一次。 比方說,命令如下:

docker service create --name myservice --mode global --network mynetwork ubuntu wait 3600 

mynetwork是覆蓋網絡。

現在我試圖訪問容器中的docker主機的主機名,所以我可以將主機名傳遞給容器中的應用程序。

我試圖通過與環境變量(--env hostname=$(hostname))的主機名,但實際上${hostname}僅在經理執行和主機名設置爲manager0所有節點。

有沒有辦法訪問主機名或將主機名傳遞給容器?

+0

每個主機啓動容器在啓動時通過一個隨機字符串定義了實現的,所以我不認爲我們可以通過它作爲啓動時的一個選項。是否可以運行4個獨立的服務,以便爲每個服務定義不同的名稱? –

+0

這不會很好地擴展。 4個節點是我的基本設置,但將來會添加更多節點。我無法爲每個節點啓動服務。也許我應該看一個鍵值存儲來保存主機名或者從我的DNS服務器獲取主機名。 – k4l4m

回答

0

您可以使用最新的naming templates以主機名創建服務。

+0

BTW命名模板不僅可用於創建服務,還可用於服務更新(未記錄,但經過測試,確實可行,至少對於--hostname) –