我在Docker上创建了一个运行ElasticSearch的容器(9200和9300已发布,因此可以通过主机访问它们)。
$ docker run --name books-es -p 9200:9200 -p 9300:9300 -d elasticsearch
65937a0f8967390d33abaad50b55975cb9292be6692d29791c2e6c37ac5d2832
然后我测试它是否正在运行:
$ docker exec books-es curl 127.0.0.1:9200
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 315{ 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
"name" : "Masque",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.0.0",
"build_hash" : "de54438d6af8f9340d50c5c786151783ce7d6be5",
"build_timestamp" : "2015-10-22T08:09:48Z",
"build_snapshot" : false,
"lucene_version" : "5.2.1"
},
"tagline" : "You Know, for Search"
}
100 315 0 0 5204 0 --:--:-- --:--:-- --:--:-- 5625
我识别码头工人的ip。
$ docker-machine ip default
192.168.99.100
但是从这里测试服务器时没有响应。
$ curl 192.168.99.100:9200
curl: (7) Failed to connect to 192.168.99.100 port 9200: Connection refused
有什么想法吗?
答案 0 :(得分:1)
确保ElasticSearch侦听ip 0.0.0.0
而不是127.0.0.1
由于docker exec books-es curl 127.0.0.1:9200
有效,这似乎是个问题。
答案 1 :(得分:0)
您可以尝试映射显式端口192.168.99.100:9200:9200
答案 2 :(得分:0)
确保设置正确的环境变量:
eval $(docker-machine ip default)
如果这不起作用,请尝试:
VBoxManage controlvm "default" --natpf1 "tcp-port9200,tcp,,9200,,9200"
VBoxManage controlvm "default" --natpf1 "udp-port9200,udp,,9200,,9200"
curl 127.0.0.1:9200