2017-08-10 50 views
1

我在碼頭羣組成的碼頭羣上部署多個堆棧。碼頭羣:在沒有外部碼的情況下在碼頭之間共享網絡

現在,我已經在我的代理堆棧撰寫文件中定義的網絡:

networks: 
    proxy: 
    driver: overlay 

其它層疊引用此網絡方式如下:

networks: 
    proxy_proxy: 
    external: true 

與此設置的問題是,所有的其他堆棧現在取決於代理堆棧。卸下代理堆棧(例如,以替換/重啓)會導致這樣的錯誤:

Failed to remove network 800w54tbh7w7clc4o8uc3y7no: Error response from daemon: rpc error: code = 9 desc = network 800w54tbh7w7clc4o8uc3y7no is in use by service 0zu489jepz586sguqrorv6j6hFailed to remove some resources from stack: proxy

有沒有一種方法來定義泊塢窗內的網絡組成一個堆棧,這樣是不是「擁有」如果它已經存在,任何新部署的堆棧都會加入它,如果它不存在,它將被創建?

這樣,堆棧之間就不存在依賴關係。

回答

1

我相信在這種情況下,網絡對於您的集羣來說是全球性的,並不是任何特定堆棧的一部分。

我建議用docker network create手動創建它,並將它稱爲external無處不在。

爲了創建,我建議使用一些配置工具(如Ansible或Salt)或shell腳本手工運行在任何主節點上。關鍵是,如果您將不得不重建羣集或創建一個克隆,則不必記住詳細信息(或創建此網絡所需的實際情況)。我不認爲有一種方法來create a compose file with just networks,因此一個shell腳本建議。

相關問題