J'ai le Dockerfile suivant:
FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0
RUN elasticsearch
EXPOSE 80
Je pense que la 3ème ligne n'est jamais atteinte.
Lorsque j'essaie d'accéder au dockercontainer depuis ma machine locale via: 172.17.0.2:9300
Je ne reçois rien, que me manque-t-il? Je souhaite accéder à elasticsearch à partir de la machine hôte locale.
Je recommande d'utiliser docker-compose (ce qui facilite beaucoup de choses) avec la configuration suivante.
La configuration démarre 3 services: élastique lui-même et des utilitaires supplémentaires pour le développement comme kibana et head plugin (ceux-ci peuvent être omis si vous n'en avez pas besoin).
Dans le même répertoire, vous aurez besoin de trois fichiers:
Avec le contenu suivant:
docker-compose.yml
version: '2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.4.0
container_name: elasticsearch_540
environment:
- http.Host=0.0.0.0
- transport.Host=0.0.0.0
- "ES_Java_OPTS=-Xms1g -Xmx1g"
volumes:
- esdata:/usr/share/elasticsearch/data
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
mem_limit: 2g
cap_add:
- IPC_LOCK
kibana:
image: docker.elastic.co/kibana/kibana:5.4.0
container_name: kibana_540
environment:
- SERVER_Host=0.0.0.0
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- 5601:5601
headPlugin:
image: mobz/elasticsearch-head:5
container_name: head_540
ports:
- 9100:9100
volumes:
esdata:
driver: local
elasticsearch.yml
cluster.name: "chimeo-docker-cluster"
node.name: "chimeo-docker-single-node"
network.Host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-Origin: "*"
http.cors.allow-headers: "Authorization"
kibana.yml
server.name: kibana
server.Host: "0"
elasticsearch.url: http://elasticsearch:9200
elasticsearch.username: elastic
elasticsearch.password: changeme
xpack.monitoring.ui.container.elasticsearch.enabled: true
Avec plus de trois fichiers dans le même répertoire et ce répertoire défini comme répertoire de travail actuel que vous faites (peut nécessiter Sudo, dépend de la façon dont vous avez configuré votre docker-compose):
docker-compose up
Il démarrera et vous verrez les journaux de trois services différents: elasticsearch_540
, kibana_540
et head_540
.
Après le démarrage initial, votre cluster élastique sera disponible pour http sous 92 et pour tcp sous 93. Validez avec la boucle suivante si le cluster a démarré:
curl -u elastic:changeme http://localhost:9200/_cat/health
Ensuite, vous pouvez voir et jouer avec votre cluster en utilisant soit kibana (avec les informations d'identification élastique/changeme):
http://localhost:5601/
ou plugin de tête:
http://localhost:9100/?base_uri=http://localhost:9200&auth_user=elastic&auth_password=changeme
Votre conteneur se ferme automatiquement en raison d'une mémoire virtuelle insuffisante. Par défaut, pour exécuter un conteneur de recherche élastique, votre mémoire doit être au moins 262144
mais si vous exécutez cette commande sysctl vm.max_map_count
et voyez que ce sera autour de 65530. Augmentez votre nombre de mémoire virtuelle en utilisant cette commande sysctl -w vm.max_map_count=262144
et réexécutez le conteneur docker run IMAGE ID
alors vous devriez avoir votre conteneur en cours d'exécution et vous devriez pouvoir accéder à la recherche élastique au port 9200 ou 9300
modifier: vérifiez ce lien https://www.elastic.co/guide/en/elasticsearch/reference/5.0/vm-max-map-count.html#vm-max-map-count