elasticsearch - español - kibana docker
Kibana en Docker no puede conectarse a Elasticsearch (3)
Traté de crear Kibana y Elasticsearch y parece que Kibana tiene problemas para identificar a Elasticsearch.
Aquí están mis pasos:
1) Crear red
docker network create mynetwork --driver=bridge
2) Ejecutar el contenedor Elasticsearch
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch_2_4 --network mynetwork elasticsearch:2.4
3) Ejecutar Kibana Container
docker run -i --network mynetwork -p 5601:5601 kibana:4.6
Obtengo una salida JSON cuando me conecto a Elasticsearch a través de http: // localhost: 9200 / a través de mi navegador.
Pero cuando abro http: // localhost: 5601 / recibo
Unable to connect to Elasticsearch at http://elasticsearch:9200.
Enfoque alternativo,
Todavía obtengo un error similar cuando intento
docker run -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 5601:5601 kibana:4.6
donde obtengo el error
Unable to connect to Elasticsearch at http://127.0.0.1:9200.
La publicación de mi blog basada en la respuesta aceptada: https://gunith.github.io/docker-kibana-elasticsearch/
Cambié la configuración de red para el contenedor Kibana y después de esto funciona bien:
Existe un malentendido sobre lo que significa localhost
o 127.0.0.1
al ejecutar un comando dentro de un contenedor. Debido a que cada contenedor tiene su propia red, localhost
no es su sistema de host real, sino el contenedor en sí. Entonces, cuando está ejecutando kibana y apuntando la variable ELASTICSEARCH_URL a localhost:9200
el proceso kibana buscará elasticsearch dentro del contenedor kibana que, por supuesto, no se está ejecutando allí.
Ya ha introducido alguna red personalizada a la que hizo referencia al iniciar los contenedores. Todos los contenedores que se ejecutan en la misma red pueden referirse entre sí a través del nombre en sus puertos de expose
(ver archivos Docker). Como llamó a su contenedor elasticsearch_2_4
, puede hacer referencia al punto final http de elasticsearch como http://elasticsearch_2_4:9200
.
docker run -d --network mynetwork -e ELASTICSEARCH_URL=http://elasticsearch_2_4:9200 -p 5601:5601 kibana:4.6
Siempre que no necesite acceder directamente a la instancia de elasticsearch, puede incluso omitir la asignación de los puertos 9200 y 9300 a su host.
En lugar de iniciar todos los contenedores por su cuenta, también sugiero usar docker-compose
para administrar todos los servicios y parámetros. También debería considerar montar una carpeta local como volumen para que los datos persistan. Este podría ser su archivo redactado. Agregue las networks
, si necesita tener la red externa, de lo contrario, esta configuración solo crea una red para usted.
version: "2"
services:
elasticsearch:
image: elasticsearch:2.4
ports:
- "9200:9200"
volumes:
- ./esdata/:/usr/share/elasticsearch/data/
kibana:
image: kibana:4.6
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
Prueba:
docker run -d -e ELASTICSEARCH_URL=http://yourhostip:9200 -p 5601:5601 kibana:4.6
Puedes probar con tu host ip o la ip identificada por docker0 en ifconfig
Saludos