我在Docker-Swarm上使用Weave网络插件。
我创建了一个具有特定IP范围的docker网络,与默认编织网络不同,我从内部网络路由到该网络。
为了更好地访问容器,我使用weave附加containername.auto.mycompany.de等DNS名称。现在,我想从我的公司网络访问这些内容。问题是,weave只允许从本地主机访问weave DNS。
就像在我的一个群节点上,我可以这样做:
host foobar.auto.mycompany.de 172.17.0.1
Using domain server:
Name: 172.17.0.1
Address: 172.17.0.1#53
Aliases:
foobar.auto.mycompany.de has address 10.40.13.3
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN)
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN)但是我找不到一种方法来使编织容器可以从这个(10.40.130/24) docker网络的其中一个IP上访问,也不能将端口暴露给集群节点。
我能想到但不喜欢的唯一方法是做这样的事情:
iptables -t nat -A DOCKER -p tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53(这不起作用,这只是一个想法)
或者篡改编织脚本,使其暴露编织容器开始时的端口。
有没有人知道更好的解决方案?
发布于 2016-01-27 16:49:15
事实上,制定规则
iptables -A DOCKER -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53
iptables -A DOCKER -p udp -m udp --dport 53 -j DNAT --to-destination 172.17.0.1:53就是这样。当我第一次尝试时,我只是忽略了,我的请求应该来自“外部”服务器来工作,而不是从内部回送设备。
这仍然不是一个很好的解决方案,但它确实起到了作用。我期待着看到你们提供更好的解决方案。
(赏金站起来了!)
https://stackoverflow.com/questions/34786515
复制相似问题