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

标签 java docker couchbase

我使用以下命令创建了第一个 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/

相关文章:

java - 在(毫秒)中设置的特定时间后,timerTask 无法启动

java - 变量如何以及何时转换为泛型类型参数中声明的类型?

docker - 一台主机上有多个 GitLab Runner Docker 实例?

go - 向超过百万条记录的现有文档添加字段

couchbase - 无法使用 cbrestore 恢复 couchbase 存储桶

python - 如何使用 Coubase Python 客户端库高效检索?

java - ANTLR 将部分字符串视为关键字

java - 将字符串从代码页 1252 转换为 1250

python - 无法在 alpine 3.9 docker 镜像中安装 Dask[complete]

azure - 在aks中部署nginx-ingress,没有rbac问题