Windows docker image vm max map count 中的 ElasticSearch

Ana*_*nan 18 windows elasticsearch docker docker-compose

我是 Docker 和 Elasticsearch 的新手。我正在使用 Windows 7 机器。我正在使用docker-compose updocker 容器。我的 yml 文件有

elasticsearch:
  image: elasticsearch:5.1.1
  environment:
    ES_JAVA_OPTS: "-Xms1g -Xmx1g"
Run Code Online (Sandbox Code Playgroud)

以及其他链接的图像。
我正在使用 docker 来调出 elasticsearch 图像,当我这样做时,我收到以下错误

[36melasticsearch_1   |?[0m ERROR: bootstrap checks failed
[36melasticsearch_1   |?[0m max virtual memory areas vm.max_map_count [65530]  is too low, increase to at least [262144]
[36melasticsearch_1   |?[0m [2017-02-08T11:06:51,752][INFO ][o.e.n.Node
Run Code Online (Sandbox Code Playgroud)

我在 google 上搜索了一个解决方案,并在他们建议使用的任何地方搜索 sudo sysctl vm.max_map_count=262144,但在 Windowssysctl中不可用。没有为 Windows 提供明确的步骤。

其他一些 Docker 映像已在我的机器上启动并运行,因此 Docker 正在运行。

有人可以提供任何线索来解决这个问题吗?

小智 52

我在这个问题上被困了几个月,解决方案是在 cmd.exe 上启动以下命令,如官方 Elasticsearch 文档中所述

1) wsl -d docker-desktop
2) sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)

您已准备好启动 Elasticsearch!

  • 救了我!唯一的问题是,在 CMD 中运行它时对我不起作用,但在 PowerShell 中运行它解决了问题。 (4认同)

Joã*_*cca 15

目前,下面这个问题的方法,使其工作是wsl -d docker-desktopsysctl -w vm.max_map_count=262144那里。

有些人通过echo "vm.max_map_count = 262144" > /etc/sysctl.d/99-docker-desktop.conf或让它持续工作echo -e "\nvm.max_map_count = 262144\n" >> /etc/sysctl.d/00-alpine.conf,但这些都不适合我。

  • 请使用此命令 `wsl -d docker-desktop` `echo 262144 >> /proc/sys/vm/max_map_count` (2认同)

小智 10

唯一对我有用的永久解决方案是将这一行添加到.wslconfig(应该在您的Windows用户目录%userprofile%中)

[wsl2]
kernelCommandLine="sysctl.vm.max_map_count=262144"
Run Code Online (Sandbox Code Playgroud)

感谢@NotTheDr01ds 找到解决方案

/sf/answers/4850628121/

https://learn.microsoft.com/en-us/windows/wsl/wsl-config#wslconfig


Joh*_*hnC 8

Elasticsearch 对此有一个修复。

这对我来说适用于 Win 10 Pro 版本 10.0.19042.685,使用 ES 7.10 的 Docker Engine v20.10.0

问题出在 Linux 主机 (WSL2) 上,而不是容器上。

请参阅带有 Docker Desktop WSL 2 后端的 Windows 部分 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#_set_vm_max_map_count_to_at_least_262144

-d 发行版(例如不是 ubuntu)

wsl -d docker-desktop
sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)

之后我的 3 节点集群 docker-compose 成功启动。

  • 你好,答案很好,但是有什么办法可以永久保持这个状态吗?看来我不得不继续这样做。 (2认同)

小智 6

您可以使用以下命令设置 vm.max_map_count:

docker-machine ssh

sudo sysctl -w vm.max_map_count=262144


小智 2

您在正常或生产模式下启动了 Elasticsearch,从版本 5 开始,该模式包含引导程序检查,如果失败,Elasticsearch 将不会启动。

https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html

但是,您可以在 Windows 上运行开发模式,这只会产生警告。只需尝试运行弹性本身的图像即可。

docker run -p 9200:9200 -e "http.host=0.0.0.0" \
 -e "transport.host=127.0.0.1" \
 docker.elastic.co/elasticsearch/elasticsearch:5.2.0
Run Code Online (Sandbox Code Playgroud)

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html