web-dev-qa-db-ja.com

Docker-ELK-vm.max_map_count

ドッカーの画像を使用しようとしていますelk-dockerhttps://elk-docker.readthedocs.io/ )、Docker Composeを使用します。 .ymlファイルは次のようになります。

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

Sudo docker-compose upコマンドを実行すると、コンソールに次のように表示されます。

* 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

どうすれば問題を解決できますか?

15
AleGallagher

おそらく、ホスト自体のvm.max_map_count/etc/sysctl.confを設定する必要があります。これにより、Elasticsearchがコンテナ内からそれを行わないようにします。目的の値がわからない場合は、現在の設定を2倍にして、Elasticsearchが正常に起動するまで続行してください。 ドキュメント推奨 少なくとも262144。

9
mustaccio

それには2つの方法があります。

  1. 一時セットmax_map_count
    • Sudo sysctl -w vm.max_map_count = 262144
      しかし、これはシステムを再起動するまで続きます。
  2. パーマメント
    • ホストマシン内
      • vi /etc/sysctl.conf
      • エントリーvm.max_map_count = 262144を作成
      • 再起動
1
pawan

Docker Hostターミナル(Docker CLI)でコマンドを実行します。

docker-machine ssh
Sudo sysctl -w vm.max_map_count=262144
exit
1
Míra
  1. Dockerコンテナーの中に入る

    # docker exec -it <container_id> /bin/bash
    
  2. 現在のmax_map_count値を表示できます

    # more /proc/sys/vm/max_map_count
    
  3. 一時的なセットmax_map_count値(コンテナー(ホスト)の再起動は持続しませんmax_map_count値)

    # sysctl -w vm.max_map_count=262144
    
  4. 永久的に設定された値

    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