MacOS 14 ARM架构Docker运行Elasticsearch遇vm.max_map_count错误求助
解决MacOS 14 ARM架构下Docker启动Elasticsearch的
vm.max_map_count过低问题 问题说明
在MacOS 14 ARM架构设备上使用Docker 4.25启动Elasticsearch 8.9.0容器时,触发错误:
vm.max_map_count [65530] is too low, increase to at least [262144]
容器配置如下:
image: elasticsearch:8.9.0 container_name: elasticsearch hostname: elastic environment: - node.name=elasticsearch - cluster.name=es-docker-cluster - cluster.initial_master_nodes=elasticsearch - bootstrap.memory_lock=true - 'ES_JAVA_OPTS=-Xms512m -Xmx512m' ulimits: memlock: soft: -1 hard: -1 volumes: - es-data:/usr/share/elasticsearch/data ports: - ${DC_ELASTIC_HOST_PORT}:${DC_ELASTIC_PORT}
已尝试以下方法但无效:
- 执行
docker-machine ssh时提示Error: No machine name(s) specified and no "default" machine exists,该方法依赖仅支持Intel架构的VirtualBox - 执行
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty时路径不存在 - 执行
sudo sysctl -w vm.max_map_count=262144时提示sysctl: unknown oid 'vm.max_map_count'
有效解决方案
方法1:临时修改(重启Docker后失效)
通过进入Docker Desktop的LinuxKit虚拟机内部调整参数:
- 运行命令进入虚拟机:
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
- 在虚拟机内执行参数设置:
sysctl -w vm.max_map_count=262144
- 输入
exit退出虚拟机,重启Elasticsearch容器即可。
方法2:持久化修改(重启Docker仍生效)
通过Docker Desktop配置文件永久设置参数:
- 打开Docker Desktop,点击右上角齿轮图标进入设置页
- 切换到Docker Engine标签,在配置JSON中添加以下内容:
{ "sysctls": { "vm.max_map_count": "262144" } }
- 点击Apply & Restart等待Docker重启完成,再启动Elasticsearch容器即可。
方法3:容器级配置(仅当前容器生效)
直接在docker-compose.yml中给Elasticsearch容器添加sysctl配置:
image: elasticsearch:8.9.0 container_name: elasticsearch hostname: elastic environment: - node.name=elasticsearch - cluster.name=es-docker-cluster - cluster.initial_master_nodes=elasticsearch - bootstrap.memory_lock=true - 'ES_JAVA_OPTS=-Xms512m -Xmx512m' ulimits: memlock: soft: -1 hard: -1 sysctls: - vm.max_map_count=262144 volumes: - es-data:/usr/share/elasticsearch/data ports: - ${DC_ELASTIC_HOST_PORT}:${DC_ELASTIC_PORT}
保存配置后重启容器即可。
内容的提问来源于stack exchange,提问作者Timofey Plyasheshnikov
相关产品推荐
相关产品推荐

