【问题标题】:Connect Docker Container to Local Elasticsearch service将 Docker 容器连接到本地 Elasticsearch 服务
【发布时间】:2019-03-02 10:47:55
【问题描述】:

我正在运行 Docker 容器,它在其中运行一个 jar 文件。

此 jar 文件需要访问 Elasticsearch 以读取数据,并且此 Elasticsearch 服务安装在本地计算机上(不在 Docker 容器中

我需要从 Docker 容器连接到本地 Elasticsearch 服务才能使其工作

我在Dockerfile中写了EXPOSE 9200 9300 service-port,我的Docker运行命令如下,

"docker run -itd --memory=1g -p 9300:9300 -p 9200:9200 -p service-port:service-port --name service-name service-name -XX: +UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -XshowSettings:vm"

当我运行此命令时,出现以下错误,

docker:来自守护进程的错误响应:驱动程序在端点服务名称上编程外部连接失败(3de884dd9a62a4a989475721cc4cdf9cb6b78f1a8d345e590471d85052d6a4de):启动用户级代理时出错:监听 tcp 0.0.0.0:9300:绑定:地址已在使用中.

P.S = 在我的本地服务器上,我需要保持弹性搜索服务开启

【问题讨论】:

    标签: docker elasticsearch networking


    【解决方案1】:

    您引用的 EXPOSE 行和 docker run -p 9200:9200 -p 9300:9300 选项都告诉 Docker 您正在运行一个容器,该容器提供 Elasticsearch 服务器,您希望侦听用于这些端口上的连接。 如果您只是尝试与在其他地方运行的 Elasticsearch 服务建立出站连接,则不需要这些选项,应该删除它们。

    【讨论】:

    • 根据您的建议,我确实从 Dockerfile 中删除了除 service-port 之外的“EXPOSE”端口,并在我的 Docker 运行命令中进行了如下更改,“docker run -itd -p service-port:service-port --name service-name service-name" 然后运行 ​​Dockerfile,它没有给出任何错误并且容器已启动但看到“Docker 日志" 我遇到了一个错误,"原因:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "errorCode" 这是一个 Elasticsearch 错误,所以我的 Docker 容器无法建立与本地 ES 服务的连接
    猜你喜欢
    • 2018-05-02
    • 2021-05-06
    • 2021-04-20
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2020-06-08
    • 2020-06-23
    相关资源
    最近更新 更多