2017-08-10 29 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脚本建议。

相关问题