web-dev-qa-db-fra.com

Comment utiliser le conteneur officiel Docker Elasticsearch?

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.

8
CommonSenseCode

Je recommande d'utiliser docker-compose (ce qui facilite beaucoup de choses) avec la configuration suivante.

Configuration (pour le développement)

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:

  • docker-compose.yml
  • elasticsearch.yml
  • kibana.yml

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

Fonctionnement

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
30
slawek

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_countet 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 IDalors 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

3