使用Java连接到Docker上的多节点Couchbase集群

时间:2018-07-03 07:25:05

标签: java docker couchbase

我使用以下命令创建了第一个沙发式服务器:

docker run -d --name db1 -p 8091-8094:8091-8094 -p 11210:11210 couchbase

我创建的第二个服务器没有端口参数,因为否则docker无法部署容器:

docker run -d --name db2 couchbase

现在,我可以访问第一个容器的Web控制台,并使用第二个容器创建集群。

问题是我无法连接到Java中创建的群集,因为没有为第二个容器发布端口11210。我总是收到 TimeoutException 。我该怎么解决?

2 个答案:

答案 0 :(得分:0)

您也必须expose第二个容器的端口,就像您在第一个容器中所做的一样(那些“参数”是端口映射)。

很可能,您无法使用参数运行第二个容器,因为您尝试映射与第一个容器中相同的端口; aka,您尝试了以下命令:

docker run -d --name db2 -p 8091-8094:8091-8094 -p 11210:11210 couchbase

这将不起作用,因为您无法使用已在使用的端口。因此,尝试映射到不同的端口集。例如:

docker run -d --name db2 -p 9091-9094:8091-8094 -p 11210:11210 couchbase

请注意我现在如何使用9091-9094而不是8091-8094。上面的命令表示:map ports 8091-8094 from the container to ports 9091-9094 in the host。主机上发送到9091-9094的所有请求都将自动转发到容器内的8091-8094

然后您可以通过指定新端口(9091-9094)连接到第二个容器。

我建议您检查Docker基础知识,尤其是port mapping的文档。

答案 1 :(得分:0)

最后,我可以通过使用vagrants为服务器设置虚拟机来解决该问题。这样,拥有多个具有相同端口的Couchbase实例就没问题。