oss elastic compose elasticsearch docker

compose - docker elasticsearch contenedor no puerto de reenvío



elasticsearch docker-compose (3)

Probé tu archivo Docker, pero simplemente funciona.

FROM dockerfile/java RUN / cd /tmp && / wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.tar.gz && / tar xvzf elasticsearch-1.3.2.tar.gz && / rm -f elasticsearch-1.3.2.tar.gz && / mv /tmp/elasticsearch-1.3.2 /elasticsearch # Define mountable directories. VOLUME ["/data"] # Define default command. CMD ["/elasticsearch/bin/elasticsearch"] EXPOSE 9200 EXPOSE 9300

Intento construir este Dockerfile y ejecutarlo.

$ docker build -t 25312935 . $ docker run -t -p 9200:9200 -p 9300:9300 --rm 25312935 [2014-08-15 04:41:08,349][INFO ][node ] [Black Crow] version[1.3.2], pid[1], build[dee175d/2014-08-13T14:29:30Z] [2014-08-15 04:41:08,349][INFO ][node ] [Black Crow] initializing ... [2014-08-15 04:41:08,353][INFO ][plugins ] [Black Crow] loaded [], sites [] [2014-08-15 04:41:10,444][INFO ][node ] [Black Crow] initialized [2014-08-15 04:41:10,444][INFO ][node ] [Black Crow] starting ... [2014-08-15 04:41:10,547][INFO ][transport ] [Black Crow] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/172.17.0.72:9300]} [2014-08-15 04:41:10,560][INFO ][discovery ] [Black Crow] elasticsearch/0mpczYoYSZCiAmbkxcsfpg [2014-08-15 04:41:13,601][INFO ][cluster.service ] [Black Crow] new_master [Black Crow][0mpczYoYSZCiAmbkxcsfpg][eeb3396b1ecc][inet[/172.17.0.72:9300]], reason: zen-disco-join (elected_as_master) [2014-08-15 04:41:13,615][INFO ][http ] [Black Crow] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/172.17.0.72:9200]} [2014-08-15 04:41:13,615][INFO ][node ] [Black Crow] started [2014-08-15 04:41:13,634][INFO ][gateway ] [Black Crow] recovered [0] indices into cluster_state

Como puede ver a continuación, request 127.0.0.1:9200 devuelve la respuesta json.

$ curl 127.0.0.1:9200 { "status" : 200, "name" : "Black Crow", "version" : { "number" : "1.3.2", }, "tagline" : "You Know, for Search" }

Verifica tu opción -p . Significa publicar el puerto del contenedor al host. Si no escribe explícitamente el puerto del host, Docker asigna un puerto aleatorio como se muestra a continuación.

$ docker run -t -p 9200 -p 9300 --rm 25312935 $ docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1aa4c2c84d04 25312935:latest /elasticsearch/bin/e 15 seconds ago Up 15 seconds 0.0.0.0:49153->9200/tcp, 0.0.0.0:49154->9300/tcp sad_shockley

0.0.0.0:49153->9200/tcp significa que puede acceder al puerto 9200 del contenedor a través del puerto 49153 del host.

$ curl 127.0.0.1:49153 { "status" : 200, "name" : "Golem", "version" : { "number" : "1.3.2", }, "tagline" : "You Know, for Search" }

Entonces, si desea usar s 9200 port, explicitly write the host port like host s 9200 port, explicitly write the host port like -p 9200: 9200 or -p 0.0.0.0: 9200: 9200`

$ docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eeb3396b1ecc 25312935:latest /elasticsearch/bin/e 59 seconds ago Up 58 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp high_elion

Si esto todavía no funciona, intente con la opción --net=host . Puede usar la pila de red del host dentro del contenedor utilizando esta opción.

$ docker run -t --net=host --rm 25312935 $ curl 127.0.0.1:9200 { "status" : 200, "name" : "Black Crow", "version" : { "number" : "1.3.2", }, "tagline" : "You Know, for Search" }

Si ninguno de los dos funciona, creo que debe verificar su otra configuración de red.

Tengo un contenedor configurado para ejecutar elasticsearch. El servicio se inicia pero no me puedo conectar a él mediante curl o el navegador.

RUN / cd /tmp && / wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch- 1.3.2.tar.gz && / tar xvzf elasticsearch-1.3.2.tar.gz && / rm -f elasticsearch-1.3.2.tar.gz && / mv /tmp/elasticsearch-1.3.2 /elasticsearch # Define mountable directories. VOLUME ["/data"] # Define default command. CMD ["/elasticsearch/bin/elasticsearch"] EXPOSE 9200 EXPOSE 9300

Conectarse a http://localhost:9200 no produce nada. El docker ps muestra los puertos;

0.0.0.0:49179->9200/tcp, 0.0.0.0:49180->9300/tcp ... net::ERR_ADDRESS_UNREACHABLE

¿Me falta algún valor de configuración? ¡GRACIAS!

[Actualización] También probé el -p en el comando ejecutar

docker run -i -p 9200:9200 -p 9300:9300 -t --rm -P team1/image1


Si ejecuta Docker en OSX, tenga en cuenta que el host es realmente la instancia de VirtualBox que se instaló cuando inicializó boot2docker. Entonces en esta situación, en lugar de usar:

curl http://localhost:9200

encuentre la IP de la instancia de cuadro virtual utilizando, que denotaré como VM_IP:

boot2docker ip

entonces intenta:

curl http://<VM_IP>:9200


Tuve un problema con el reenvío de puertos cuando ejecuté Elasticsearch en un contenedor acoplable. Resolví el problema especificando manualmente qué interfaces vincular el docker run --rm -p 9200:9200 -p 9300:9300 --name=es elasticsearch:latest -Des.network.host=0.0.0.0 servidor docker run --rm -p 9200:9200 -p 9300:9300 --name=es elasticsearch:latest -Des.network.host=0.0.0.0 .

La parte vinculante es -Des.network.host=0.0.0.0 al final. Escribí una publicación de blog que detalla esto en https://mad.is/2016/09/running-elasticsearch-in-docker-container/