web-dev-qa-db-fra.com

Docker - ELK - vm.max_map_count

J'essaie d'utiliser l'image du docker elk-docker ( https://elk-docker.readthedocs.io/ ) à l'aide de Docker Compose. Le fichier .yml est comme ceci:

elk:
image: sebp/elk
ports:
  - "5601:5601"
  - "9200:9200"
  - "5044:5044"

Lorsque j'exécute la commande Sudo docker-compos up, la console affiche:

* Starting Elasticsearch Server
sysctl: setting key "vm.max_map_count": Read-only file system
...fail!
waiting for Elasticsearch to be up (1/30)
waiting for Elasticsearch to be up (2/30)
waiting for Elasticsearch to be up (3/30)
waiting for Elasticsearch to be up (4/30)
waiting for Elasticsearch to be up (5/30)
waiting for Elasticsearch to be up (6/30)
waiting for Elasticsearch to be up (7/30)
waiting for Elasticsearch to be up (8/30)
waiting for Elasticsearch to be up (9/30)
waiting for Elasticsearch to be up (10/30)
waiting for Elasticsearch to be up (11/30)
waiting for Elasticsearch to be up (12/30)
waiting for Elasticsearch to be up (13/30)
waiting for Elasticsearch to be up (14/30)
waiting for Elasticsearch to be up (15/30)
waiting for Elasticsearch to be up (16/30)
waiting for Elasticsearch to be up (17/30)
waiting for Elasticsearch to be up (18/30)
waiting for Elasticsearch to be up (19/30)
waiting for Elasticsearch to be up (20/30)
waiting for Elasticsearch to be up (21/30)
waiting for Elasticsearch to be up (22/30)
waiting for Elasticsearch to be up (23/30)
waiting for Elasticsearch to be up (24/30)
waiting for Elasticsearch to be up (25/30)
waiting for Elasticsearch to be up (26/30)
waiting for Elasticsearch to be up (27/30)
waiting for Elasticsearch to be up (28/30)
waiting for Elasticsearch to be up (29/30)
waiting for Elasticsearch to be up (30/30)
Couln't start Elasticsearch. Exiting.
Elasticsearch log follows below.
cat: /var/log/elasticsearch/elasticsearch.log: No such file or directory
docker_elk_1 exited with code 1

Comment puis-je résoudre le problème?

5
AleGallagher

Vous devez probablement définir vm.max_map_count dans /etc/sysctl.conf sur l'hôte lui-même, afin qu'Elasticsearch n'essaye pas de le faire depuis l'intérieur du conteneur. Si vous ne connaissez pas la valeur souhaitée, essayez de doubler le paramètre actuel et continuez jusqu'au démarrage réussi d'Elasticsearch. Documentation recommandée au moins 262144.

9
mustaccio

Vous pouvez le faire de 2 manières.

  1. Ensemble temporaire max_map_count :
    • Sudo sysctl -w vm.max_map_count = 262144
      mais cela ne durera que jusqu'au redémarrage de votre système.
  2. Permament
    • Dans votre ordinateur hôte
      • vi /etc/sysctl.conf
      • faire une entrée vm.max_map_count = 262144
      • redémarrer
1
pawan

Dans le terminal hôte Docker (CLI Docker), exécutez les commandes suivantes:

docker-machine ssh
Sudo sysctl -w vm.max_map_count=262144
exit
1
Míra
  1. Allez dans votre conteneur de docker

    # docker exec -it <container_id> /bin/bash
    
  2. Vous pouvez voir votre max_map_count valeur 

    # more /proc/sys/vm/max_map_count
    
  3. Ensemble temporaire max_map_count value (le redémarrage du conteneur (hôte) ne persistera pas max_map_count value) 

    # sysctl -w vm.max_map_count=262144
    
  4. Définir en permanence la valeur

    1. # vi /etc/sysctl.conf
         vm.max_map_count=262144
    
    2. # vi /etc/rc.local 
         #put parameter inside rc.local file
         echo 262144 > /proc/sys/vm/max_map_count
    
1
kalyani chaudhari