直接访问容器

时间:2016-08-11 06:29:19

标签: docker-swarm

在设置了包含3台主机(manager1,worker1,worker2)的swarm网络后,我创建了一个覆盖网络:

myString = '1X2X3X'
print (myString.replace ('X', 'X\n'))

然后基于couchbase创建了一个服务(例如,暴露非无状态web ui的任何其他图像都有同样的问题)

docker network create --driver=overlay testNet

如果我尝试访问位于端口8091上的web ui,一切正常,直到我开始将服务扩展到2(或更多)。

docker service create --name db --network=testNet --publish 8091:8091 couchbase

此时,swarm负载均衡器会不断重定向2个容器之间的请求,从而使web ui无法使用。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

我个人不建议将Docker Swarm与Couchbase Server结合使用,因为它确实存在阻抗不匹配。在需要它的每台服务器上专门创建一个Couchbase容器更为明智(每个服务器只能有一个以避免单点故障!)然后转发该服务器上的相应端口。

尽管如此,这种情况下的答案是单独访问每个节点/容器,您可以通过它的私有IP访问容器来实现。您可以使用docker ps抓取容器ID,然后在docker inspect <container id>中查找IP来识别此IP。