2015-10-27 64 views
2

假設我有兩個進程在單個計算機/主機上運行Docker內部的C++代碼(單獨的映像)。一種測試Docker中運行的進程是否在同一主機上的方法

如何確定這些進程是否共享相同的主機(通過編寫在容器內運行的C++代碼/ Linux命令)。

編輯

VonC提到從外面添加該信息,並「幫助集裝箱」有更多的見解,但我想辦法從裏面這樣做沒有進入Dockerfile和/或碼頭啓動環境。

+0

請問你的問題,用親和參數的容器編排引擎(如羣,kubernetes或Mesos)來解決。指示您的容器應該彼此分開部署,並讓引擎完成其餘部分 –

+0

我正在尋找獨立於Docker/Orchestrations的方式。我將編輯該問題強調 –

回答

1

正如issues 1143中提到的,也許你可以檢查主機的ip。如果它們在兩個容器中都相同,則應該在同一主機上運行。

注意:有時您需要連接到Docker主機,這意味着獲取主機的IP地址。
您可以使用以下shell命令來簡化這個過程:

$ alias hostip="ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print \$2 }'" 
$ docker run --add-host=docker:$(hostip) --rm -it debian 

的另一種選擇是pass the docker host when running the container

當你在做搬運工運行,添加以下參數:--add-host=dockerhost:replace_with_docker_host_ip,它在容器的/etc/hosts文件中創建一個條目。
當然,這意味着您可以使用其名稱dockerhost從該容器內引用您的碼頭主機。

請參閱「Adding entries to a container hosts file

+0

謝謝,但我正在尋找獨立於外部添加的方式。我會編輯這個問題來強調 –

相關問題