docker - 如何在另一个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 在我的情况下不是选择。
解决方案
推荐阅读
- javascript - 如何创建一个包含不重复而不是随机数的数组?
- c# - 优化渲染纹理
- gitlab - 如何在 GitLab 中自定义构建触发器
- android - Google Play 计费库 2.0:是否必须确认旧的非消耗性购买?
- r - 如何使用滑块在 RShiny 中动态选择输入数量
- c# - 如何计算动画师的动画完成所需的时间?
- unity3d - 有谁知道如何从播放模式中删除世界图标中的 TextMeshPro?
- php - 导出到 xlsx 文件时,20 位数字将显示 15 位数字后跟 5 个零
- unity3d - 3D播放器和2D地板。我有对撞机问题
- postgresql - 在 Google Cloud SQL 中授予所有权限