我使用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
所有節點。
有沒有辦法訪問主機名或將主機名傳遞給容器?
每個主機啓動容器在啓動時通過一個隨機字符串定義了實現的,所以我不認爲我們可以通過它作爲啓動時的一個選項。是否可以運行4個獨立的服務,以便爲每個服務定義不同的名稱? –
這不會很好地擴展。 4個節點是我的基本設置,但將來會添加更多節點。我無法爲每個節點啓動服務。也許我應該看一個鍵值存儲來保存主機名或者從我的DNS服務器獲取主機名。 – k4l4m