假設我有兩個進程在單個計算機/主機上運行Docker內部的C++代碼(單獨的映像)。一種測試Docker中運行的進程是否在同一主機上的方法
如何確定這些進程是否共享相同的主機(通過編寫在容器內運行的C++代碼/ Linux命令)。
編輯
VonC提到從外面添加該信息,並「幫助集裝箱」有更多的見解,但我想辦法從裏面這樣做沒有進入Dockerfile和/或碼頭啓動環境。
假設我有兩個進程在單個計算機/主機上運行Docker內部的C++代碼(單獨的映像)。一種測試Docker中運行的進程是否在同一主機上的方法
如何確定這些進程是否共享相同的主機(通過編寫在容器內運行的C++代碼/ Linux命令)。
編輯
VonC提到從外面添加該信息,並「幫助集裝箱」有更多的見解,但我想辦法從裏面這樣做沒有進入Dockerfile和/或碼頭啓動環境。
正如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
從該容器內引用您的碼頭主機。
謝謝,但我正在尋找獨立於外部添加的方式。我會編輯這個問題來強調 –
請問你的問題,用親和參數的容器編排引擎(如羣,kubernetes或Mesos)來解決。指示您的容器應該彼此分開部署,並讓引擎完成其餘部分 –
我正在尋找獨立於Docker/Orchestrations的方式。我將編輯該問題強調 –