我使用以下命令创建了第一个 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。我该如何解决这个问题?
最佳答案
您也必须公开
第二个容器的端口,就像在第一个容器中所做的那样(这些“参数”是端口映射)。
很可能,您无法使用参数运行第二个容器,因为您尝试映射与第一个容器中相同的端口;又名,您尝试过此命令:
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
。上述命令的意思是:将容器中的端口 8091-8094 映射到主机中的端口 9091-9094
。发送到主机上的 9091-9094
的任何请求都将自动转发到容器内的 8091-8094
。
然后您可以通过指定新端口 (9091-9094
) 连接到第二个容器。
我建议您查看docker基础知识,尤其是端口映射
的文档。
关于java - 使用 Java 连接到 Docker 上的多节点 Couchbase 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51148789/