如何在Apple Silicon架构的Mac设备上运行Elasticsearch 6?
Apple Silicon架构Mac运行Elasticsearch 6解决方案
前置准备
- 确保已经安装Rosetta2:
softwareupdate --install-rosetta - 打开Docker Desktop的Rosetta转译开关:进入设置->功能开发页,勾选「使用Rosetta模拟x86/64架构」,重启Docker生效
- 给Docker分配至少3G运行内存,避免ES内存不足被系统杀死
完整启动命令
docker run -d --platform linux/amd64 --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-XX:UseAVX=0 -Xms1g -Xmx1g" \ -e "xpack.ml.enabled=false" \ -e "xpack.monitoring.enabled=false" \ -e "xpack.security.enabled=false" \ docker.elastic.co/elasticsearch/elasticsearch:6.8.18
参数说明
--platform linux/amd64:指定容器运行在x86_64架构模拟环境下-e "discovery.type=single-node":配置为单节点模式,不需要集群发现逻辑-e "ES_JAVA_OPTS=-XX:UseAVX=0 -Xms1g -Xmx1g":关闭JVM的AVX指令集调用,同时显式设置堆内存最小/最大值均为1G,避免内存分配波动和不足问题。之前启动无响应无日志的核心原因就是ES默认申请2G堆内存,内存不足时进程被OOM杀掉,仅残留空容器状态-e "xpack.ml.enabled=false":关闭依赖SSE4.2指令集的机器学习模块,解决x-pack控制器启动报错-e "xpack.monitoring.enabled=false" -e "xpack.security.enabled=false":关闭其他非必要的x-pack原生组件,降低转译兼容风险
启动验证
- 启动后等待30秒,执行
docker logs elasticsearch查看日志,出现started标识即为启动成功 - 执行
curl http://localhost:9200,正常返回如下格式的响应:
{ "name" : "xxx", "cluster_name" : "docker-cluster", "cluster_uuid" : "xxx", "version" : { "number" : "6.8.18", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "xxx", "build_date" : "xxx", "build_snapshot" : false, "lucene_version" : "7.7.3", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
异常排查
- 如果容器异常退出,执行
docker inspect elasticsearch | grep OOMKilled,若返回值为true,调大Docker分配的内存后重试 - 若依然有指令集相关报错,可在ES_JAVA_OPTS中额外添加
-XX:-UseSSE42参数,关闭SSE4.2指令集调用
内容的提问来源于stack exchange,提问作者Ortomala Lokni
相关产品推荐
相关产品推荐

