MacOS 14上Docker镜像中的Elasticsearch vm.max_map_count错误

hivapdat  于 12个月前  发布在  Docker
关注(0)|答案(2)|浏览(244)

我有“vm.max_map_count [65530] is too low,increase to at least [262144]”错误,而弹性容器在Docker 4.25,MacOS 14和ARM核心上启动。
以下是我的容器 prop :

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}

字符串
我已经尝试了这里描述的步骤:Install Elasticsearch with Docker但它没有帮助。
命令docker-machine ssh通过Error: No machine name(s) specified and no "default" machine exists失败。似乎必须创建虚拟机,但它需要仅在Intel Core Mac上运行的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'错误而失败。
可能有人知道其他的解决办法?

n53p2ov0

n53p2ov01#

可悲的是,现在唯一可能的是降级回4242(https://docs.docker.com/desktop/release-notes/#4242)的MacOS。
我不知道它是否与Rosetta实现有关;尝试为Rosetta进行软件更新(https://docs.docker.com/desktop/install/mac-install/#system-requirements),看看是否有帮助。
这不是现在的答案,但它是一个临时的工作。

jgwigjjp

jgwigjjp2#

具体来说,Elasticsearch需要将vm.max_map_count设置至少设置为262144。在macOS上,Docker Desktop运行的是一个虚拟化的Linux环境,Elasticsearch容器实际上在其中运行。在此环境中调整vm.max_map_count等设置可能具有挑战性,因为它不像在原生Linux主机上那样简单。

  • 在进行此更改之前,请确保Docker Desktop未运行。
  • 您需要直接编辑Docker Desktop配置文件。您可以在~/Library/Group Containers/group.com.docker/settings.json找到此文件。使用文本编辑器打开此文件。
  • settings.json文件中,查找"linuxVmSettings"或类似的部分,您可能需要添加或修改vm.max_map_count的条目。如果没有,您可以尝试添加如下内容:
"linuxVmSettings": {
  "vm.max_map_count": 262144
}

字符串
保存对settings.json的更改,并再次启动Docker Desktop。

相关问题