在 docker 容器外访问 vespa 时出现问题

Issue accessing vespa outside docker container

已在 Mac 上安装 Docker 并尝试在 Docker 上 运行 Vespa 按照以下 link 中指定的步骤 https://docs.vespa.ai/documentation/vespa-quick-start.html

我在第 4 步之前没有遇到任何问题。我在第 2 步和第 3 步之后看到 vespa 容器 运行ning returned 200 OK 响应。

但是第5步未能return 200 OK响应。下面是我 运行 在我的终端上的命令 curl -s --head http://localhost:8080/ApplicationStatus

我不断收到

curl: (52) Empty reply from server whenever I run without -s option.

所以我试图查看我的 vespa 容器内的监听端口,但没有看到 8080 的任何内容,但可以看到 19071(在步骤 3 中使用)

➜  ~ docker exec vespa bash -c 'netstat -vatn| grep 8080'  

➜  ~ docker exec vespa bash -c 'netstat -vatn| grep 19071'

tcp        0      0 0.0.0.0:19071           0.0.0.0:*               LISTEN     

下面的文档包含与 vespa 端口相关的信息

https://docs.vespa.ai/documentation/reference/files-processes-and-ports.html

我假设端口 8080 应该在 docker 运行(快速启动的第 2 步 link)之后处于活动状态,并且可以在端口映射完成后从容器外部访问。 但是我首先没有看到容器内的 8080 端口处于活动状态。 我错过了什么吗?我是否需要执行快速入门中提到的任何其他步骤?仅供参考,我在 docker 中安装了 Jenkins,并且能够通过端口映射访问外部容器。但不确定为什么它不能与 vespa.I 一起工作,一直在安静地尝试,但没有任何进展。如果我在这里遗漏了什么,请告诉我。

我的猜测是您的 jdisc 容器尚未完成初始化或未正确初始化?您是否尝试查看日志?

docker exec vespa bash -c '/opt/vespa/bin/vespa-logfmt /opt/vespa/logs/vespa/vespa.log'

这应该会告诉您是否有问题。当它准备好接收请求时,您会看到类似这样的内容:

[2018-12-10 06:30:37.854] INFO    : container        Container.org.eclipse.jetty.server.AbstractConnector   Started SearchServer@79afa369{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
[2018-12-10 06:30:37.857] INFO    : container        Container.org.eclipse.jetty.server.Server  Started @10280ms
[2018-12-10 06:30:37.857] INFO    : container        Container.com.yahoo.container.jdisc.ConfiguredApplication  Switching to the latest deployed set of configurations and components. Application switch number: 0
[2018-12-10 06:30:37.859] INFO    : container        Container.com.yahoo.container.jdisc.ConfiguredApplication  Initializing new set of configurations and components. Application switch number: 1

您的 docker 容器 "Minimum 6GB memory dedicated to Docker (the default is 2GB on Macs)." 的内存太少。参见 https://docs.vespa.ai/documentation/vespa-quick-start.html

死锁检测器警告和无法从配置服务器获取配置(很可能被 oom 终止)表明您的内存太低。