首页 > 解决方案 > 如何在另一个docker中访问docker中的elasticsearch?

问题描述

我使用以下命令在 docker 中部署 elasticsearch:

sudo docker run --name es1 -p 6200:9200 -p 6300:9300 -e "xpack.security.enabled=false" -e discovery.type=single-node -e "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" docker.elastic.co/elasticsearch/elasticsearch:5.5.3

docker容器运行的主机ip是hostip docker0的inet addr是172.17.0.1 docker inpect above ES容器,它的ip是:172.17.0.5

我直接在主机中运行命令(步骤 1):

curl -XGET 'hostip:6200'

然后我得到结果

我在另一个部署在具有上述 ES 的主机上的 docker 中运行命令(步骤 2):

curl -XGET 'hostip:6200'

什么也得不到,访问将超时

我在另一个部署在具有上述 ES 的主机上的 docker 中运行命令(步骤 3):

curl -XGET '172.17.0.1:6200'

什么也得不到,访问将超时

我在另一个部署在具有上述 ES 的主机上的 docker 中运行命令(步骤 4):

curl -XGET '172.17.0.5:9200'

然后我得到结果

我在与部署的 ES 上面的主机不同的另一台主机上运行命令(步骤 5):

curl -XGET 'hostip:6200'

然后我得到结果

我在另一个部署在具有上述 ES 的 diff 主机上的 docker 中运行命令(步骤 6):

curl -XGET 'hostip:6200'

然后我得到结果

所以我的问题是:如何从部署在同一主机上的另一个容器访问这个带有 hostip:6200 的 ES 容器?

--net=host 在我的情况下不是选择。

标签: dockerelasticsearch

解决方案


推荐阅读