Docker不会发布选定的端口

时间:2015-11-19 12:07:32

标签: elasticsearch docker

我在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

有什么想法吗?

3 个答案:

答案 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)

如果这不起作用,请尝试:

  • port mapping at the VM level

    VBoxManage controlvm "default" --natpf1 "tcp-port9200,tcp,,9200,,9200"
    VBoxManage controlvm "default" --natpf1 "udp-port9200,udp,,9200,,9200"
    
  • curl 127.0.0.1:9200