2017-05-30 75 views
1

如果我在Docker容器中運行java應用程序,並且想從同一個java應用程序代碼中獲取正在運行的docker容器的名稱(在其中運行我的java應用程序) ,通過java代碼獲取容器名稱的方式是什麼?如何在java代碼中獲取docker容器名

請注意,我想要在容器中運行的相同的Java應用程序中有java代碼。

回答

3

你可以確保你有docker.sock mounted, and call docker inspect from there(因爲你可以call docker command with Java

,但似乎過於複雜(依靠hostname是啓動容器時重寫:it does not work in edge cases

一個更更簡單的解決方案是在運行所述容器時將容器名稱作爲環境變量傳遞:

docker run -e name=<containerName> --tag <containerName> ... 

這樣,您可以從Java query an environment variable開始容器時自己設置的自己。

+0

感謝您的回答。但是如果我不想在運行docker run時傳遞容器名稱會怎麼樣。有沒有簡單的方法從java代碼中找到容器名稱? –

+0

@RajibBiswas否:通過這個名字是最簡單的wxay:爲什麼你不能在docker run上這樣設置它? – VonC

+0

因爲我們作爲一種產品,向我們的客戶提供基礎圖像,然後他們在我們的基礎圖像上創建自己的應用程序圖像並運行容器。所以,我們不是誰來做碼頭運行,我們的客戶會這樣做。所以我不能強迫我的客戶做 - 在做碼頭運行時的名字。我希望你現在明白我的問題。 –

相關問題