Docker - ELK - vm.max_map_count

Ale*_*her 14 elasticsearch docker docker-compose elastic-stack

我正在尝试使用Docker 的图像elk-docker(https://elk-docker.readthedocs.io/),使用Docker Compose..yml文件是这样的:

elk:
image: sebp/elk
ports:
  - "5601:5601"
  - "9200:9200"
  - "5044:5044"
Run Code Online (Sandbox Code Playgroud)

当我运行命令: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
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

mus*_*cio 15

你可能需要设置vm.max_map_count/etc/sysctl.conf主机本身,使Elasticsearch不会尝试这样做,从容器内.如果您不知道所需的值,请尝试将当前设置加倍并继续运行,直到Elasticsearch成功启动.文档建议至少262144.

  • 我也遇到了这个问题,并且已经就macOS主机的解决方案进行了一些讨论,但我不确定对Windows有什么影响.在Docker v1.13之前,这很简单(`docker-machine ssh`并运行`sudo sysctl -w vm.max_map_count = 262144`).现在,用于macOS的Docker正在使用xhyve虚拟机,将`docker-machine ssh`步骤替换为`screen~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty` .资料来源:https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html#docker-cli-run-prod-mode (3认同)
  • 增加 vm.max_map_count 时的副作用:https://www.novell.com/support/kb/doc.php?id=7000830 (2认同)
  • 如果主机是MacOS怎么办? (2认同)

小智 9

您可以通过2种方式做到这一点。

  1. 临时设置max_map_count
    • sudo sysctl -w vm.max_map_count = 262144,
      但这只会持续到重新启动系统。
  2. 永久物
    • 在您的主机中
      • vi /etc/sysctl.conf
      • 制作条目vm.max_map_count = 262144
      • 重新开始


Mír*_*íra 7

在Docker主机终端(Docker CLI)中运行命令:

docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
exit
Run Code Online (Sandbox Code Playgroud)