在 Windows 上设置 vm.max_map_count 参数
在 Windows 上设置 vm.max_map_count=262144
参数(常用于 Elasticsearch)的方法取决于您使用的 Docker 环境类型。以下是针对不同 Docker 环境的设置方法:
Docker Desktop (WSL 2 后端)
如果您使用的是基于 WSL 2 的 Docker Desktop(推荐且是最新版默认配置):
-
创建或修改 WSL 配置文件:
在 PowerShell 或命令提示符中运行:
# 创建 WSL 配置目录(如不存在) New-Item -Path "$env:USERPROFILE\.wslconfig" -ItemType File -Force
-
编辑 .wslconfig 文件:
使用记事本或任何文本编辑器打开
%USERPROFILE%\.wslconfig
文件,添加或修改为:[wsl2] kernelCommandLine = sysctl.vm.max_map_count=262144
-
重启 WSL:
在 PowerShell 或命令提示符中运行:
wsl --shutdown
-
重启 Docker Desktop
在 WSL 中直接设置(临时方法)
如果上述方法不起作用,可以在 WSL 中直接设置:
-
打开 WSL 终端:
wsl
-
在 WSL 中设置参数:
sudo sysctl -w vm.max_map_count=262144
-
验证设置:
sysctl vm.max_map_count
在 WSL 中永久设置
在 WSL 发行版中永久设置:
-
打开 WSL 终端:
wsl
-
编辑 sysctl.conf 文件:
sudo nano /etc/sysctl.conf
-
添加以下行:
vm.max_map_count=262144
-
保存并退出:按 Ctrl+O,然后 Enter,再按 Ctrl+X
-
应用设置:
sudo sysctl -p
-
重启 WSL:
# 在 Windows PowerShell 中执行 wsl --shutdown
使用 Docker Toolbox 或旧版 Docker Machine(不推荐)
如果使用的是旧版基于 VirtualBox 的 Docker:
-
通过 SSH 连接到 Docker Machine:
docker-machine ssh default
-
设置参数:
sudo sysctl -w vm.max_map_count=262144
-
永久设置:
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
验证设置是否生效
设置完成后,可以在 WSL 或 Docker 环境中验证设置是否生效:
sysctl vm.max_map_count
输出应该显示:vm.max_map_count = 262144
这个设置对于运行 Elasticsearch 容器尤其重要,它需要较高的 vm.max_map_count
值以正常运行。