问题描述
在windows环境下用Docker Desktop(wsl docker)启动 elasticsearch时报错

bash
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方案
方案一
默认的vm.max_map_count值是65530,而es需要至少262144
根据 elasticsearch官方文档 的解决方案,执行以下命令后,es可以正常启动。
bash
wsl -d docker-desktop
sysctl -w vm.max_map_count=262144
但是,以上修改只在当前会话有效,重启 Windows 和 WSL 都要重新设置
方案二
根据docker官方给出的解决办法,我尝试后,docker重启或系统重启就失效了
bash
wsl -d docker-desktop
echo 262144 >> /proc/sys/vm/max_map_count
方案三
根据Using Docker-Desktop for Windows, how can sysctl parameters be configured to permeate a reboot? 的回答,添加wsl .wslconfig文件,使wsl每次启动都执行命令。
在你的windows %userprofile% 目录(通常是C:\Users<你的用户名>)中创建或编辑.wslconfig文件,加入如下命令
bash
[wsl2]
kernelCommandLine = "sysctl.vm.max_map_count=262144"
然后,重启你的docker,尝试在cmd中输入以下命令,查看max_map_count是否已经变为262144
bash
wsl -d docker-desktop
sysctl vm.max_map_count