[上下文:主機是使用Docker版本17.05.0-ce的AWS-EC2/Ubuntu 14.04.5。容器是從公開可用的回購圖像cbhihe/serf-alpine-bash構建的。集裝箱位於同一EC2實例和共享相同的默認橋接網絡以及實例的eth0接口。]「無法解析IP」;在加入dockerized serf代理時,bash腳本中的「查找錯誤」
這個問題的依據是answer到一個不同的問題。
兩個運行docker
容器,每個容器用它直播serf
代理工作,我想以從無人值守的bash腳本是一個雙節點集羣的農奴,其中兩個容器中運行在主機上執行。
對於集裝箱「DC2」私有IP 172.17.0.2加入另一個容器「DC1」一個農奴代理,我的劇本是這樣的:
docker run -d --name DC1 --rm cbhihe/serf-alpine-bash agent -node=NODE1 -iface=eth0
docker run -d --name DC2 --rm cbhihe/serf-alpine-bash agent -node=NODE2 -iface=eth0
docker exec -d DC2 serf join 172.17.0.2
兩個第一線產生預期的結果,即2個運行容器。第三行似乎忽視:
- 或者靜默,使用分離開關時,
或與在沒有這種開關的下面的錯誤。
錯誤加入集羣:1個錯誤發生: 無法解析172.17.0.2:查找172.17.0.2:無效的域名
無論哪種方式加入不會發生。
從控制檯執行完全相同的操作完美無瑕。
我看着導入主機的環境在我的腳本的bash shebang上下文中。不成功。指針是受歡迎的。 Tx
也許一些依賴與殼?嘗試'docker exec DC2 bash -c'serf join 172.17.0.2'' – Robert
@Robert,它在我的用例中正常工作:'docker exec「$ cont_id」bash -c'serf join'「$ join_IP」'你可以嗎讓它成爲一個答案,也許爲未來的讀者填充一個'bash -c'環境細節的簡短解釋?再次感謝你。 – Cbhihe