从容器到主机的访问

时间:2016-10-31 22:39:39

标签: docker

我的主持人有弹性搜索服务。

我可以在我的控制台中运行:

$ curl http://127.0.0.1:9200
{
  "name" : "node00",
  "cluster_name" : "cluster00",
  "cluster_uuid" : "Zk4RzStrTLeSD2TQXReRlA",
  "version" : {
    "number" : "5.0.0",
    "build_hash" : "253032b",
    "build_date" : "2016-10-26T04:37:51.531Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.0"
  },
  "tagline" : "You Know, for Search"
}

我获得了docker comunication的ip地址:

$ sudo ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:6b:fc:f8:82  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0

内部容器:

root@1e473bd5ca92:~# curl http://172.17.0.1:9200
curl: (7) Failed to connect to 172.17.0.1 port 9200: Connection refused

但如果我将此查询运行到互联网,我得到了有效的回复:

root@1e473bd5ca92:~# curl 'https://api.ipify.org?format=json'
{"ip":"192.143.241.250"}

我如何从主机访问弹性搜索服务?

1 个答案:

答案 0 :(得分:0)

主机上的Elasticsearch实例可能只在localhost上侦听(127.0.0.1)。查看主配置文件中的network.host设置(可能/etc/elasticsearch/elasticsearch.yml或类似内容)。如果它看起来像:

network.host:
   - 127.0.0.1

您可以显式添加Docker桥接接口:

network.host:
  - 127.0.0.1
  - 172.17.0.1

或者你可以让它在所有界面上听(如果你确定这是你想要的行为):

network.host:
  - 0.0.0.0

reference for this configuration setting