使用新的码头自定义网络,如果您想默认不允许容器间通信,并显式定义任何可以通信的容器,则需要创建最多2^N网络(其中N=容器数),并将确切的两个容器附加到每个网络上。这样做有什么缺点吗?
此外,如果我只想允许从webServerContainer到dbContainer的出站连接,而不允许从dbContainer到webServerContainer的出站连接,那么有什么方法可以做到吗?
似乎使用icc=false和遗留的--link特性允许这样的功能,但是这个特性被标记为不推荐使用。
例如:
database-access网络中,它们中的任何一对都可以相互交谈,这不是我想要的。有没有人对实现这一目标的最佳方式有建议,比如17.12码头?
发布于 2018-02-04 14:20:51
我的回答可能不是最矫揉造作的方式,但仍然有帮助,我希望。
我最喜欢的方法是手工操作。Docker操纵iptables来实现访问规则和容器间通信。我个人不喜欢这样做(原因有几个;iptable的状态通常会变得一团糟,尤其是其他软件也会操纵iptables )。因此,我将"iptables": false在/etc/docker/daemon.json中设置为false:
# cat daemon.json
{
"iptables": false
}就像你在网络之间路由时一样配置网络。
这也意味着您需要设置端口转发(或HTTP代理等)来从外部访问容器,并且您必须定义自己的码头网络(docker network)。
我的回答这里也可能有帮助。
https://serverfault.com/questions/895586
复制相似问题