无法使用docker在Apple Mac芯片M1上启动弹性搜索



在发布这个问题之前,我浏览了许多链接,如:Kibana不能与Mac M1上的docker连接到ElasticSearch如何在苹果硅Mac上运行Elasticsearch 6 ?

I'veMac book with chip=Apple M1 Pro并希望安装elasticsearch通过使用下面的docker-compose。yml文件。

version: "3.7"
networks:
dev-net:
name: dev-net
driver: bridge
services:
elasticsearch:
platform: linux/amd64
image: elasticsearch:7.8.0
container_name: elasticsearch
restart: unless-stopped
networks:
- dev-net
ports:
- "9200:9200"
- "9300:9300"
environment:
discovery.type: single-node
kibana:
platform: linux/amd64
image: kibana:7.8.0
container_name: kibana
restart: unless-stopped
networks:
- dev-net
ports:
- "5601:5601"
depends_on:
- elasticsearch

我正在尝试启动http://localhost:9200,但它根本没有启动。

谁能给我指点一下这个问题吗?

ps码头工人

CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                            NAMES
0786eda7236c   kibana:7.8.0          "/usr/local/bin/dumb…"   12 minutes ago   Up 12 minutes   0.0.0.0:5601->5601/tcp                           kibana
973c40079850   elasticsearch:7.8.0   "/tini -- /usr/local…"   12 minutes ago   Up 12 minutes   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch

如果你的目标是只在你的开发机器上工作,你可以使用这个:

miostackoverflow.yml
version: "3.7"
networks:
dev-net:
name: dev-net
driver: bridge
services:
elasticsearch:    
image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0           # this works perfectly fine
# platform: linux/amd64                                               
# image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0-amd64   
container_name: elasticsearch
restart: unless-stopped
networks:
- dev-net
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
# - bootstrap.system_call_filter=false # use to avoid the symptom eception. use it only on the amd64 version
kibana:
image: docker.elastic.co/kibana/kibana:7.15.0           # this works perfectly fine
# platform: linux/amd64                                 
# image: docker.elastic.co/kibana/kibana:7.15.0-amd64   
container_name: kibana
restart: unless-stopped
networks:
- dev-net
ports:
- "5601:5601"
depends_on:
- elasticsearch

当您使用活动版本的yaml文件docker.elastic.co/elasticsearch/elasticsearch:7.15.0docker.elastic.co/kibana/kibana:7.15.0

不使用platform容器属性,它在不到一分钟内启动,您也可以访问kibana。

docker compose -f miostackoverflow.yml up --build --remove-orphans     
docker compose -f miostackoverflow.yml down -v --remove-orphans  




NOTABENE

如果您尝试启动amd64版本(我在yaml上停用了这些版本),您将在elastic上得到此异常:

elasticsearch  | {"type": "server", "timestamp": "2022-12-15T11:22:13,750Z", "level": "WARN", "component": "o.e.b.JNANatives", "cluster.name": "docker-cluster", "node.name": "f25ebc3d7cbf", "message": "unable to install syscall filter: ", 
elasticsearch  | "stacktrace": ["java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed",
elasticsearch  | "at org.elasticsearch.bootstrap.SystemCallFilter.linuxImpl(SystemCallFilter.java:331) ~[elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.SystemCallFilter.init(SystemCallFilter.java:606) ~[elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.JNANatives.tryInstallSystemCallFilter(JNANatives.java:248) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Natives.tryInstallSystemCallFilter(Natives.java:102) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:108) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:399) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:167) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:158) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:114) [elasticsearch-cli-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.cli.Command.main(Command.java:79) [elasticsearch-cli-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:123) [elasticsearch-7.15.0.jar:7.15.0]",
elasticsearch  | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81) [elasticsearch-7.15.0.jar:7.15.0]"] }

无论如何,我在环境中设置了这个以避免上面的错误

- bootstrap.system_call_filter=false

它有bug,速度慢,你必须等4或5分钟才能启动。然而,即使在这种情况下,你也应该能够访问elastic和kibana

最新更新