Docker Elastic Search - 如何在 windows docker 中设置 vm.max_map_count?

Docker Elastic Search - How to set vm.max_map_count in windows docker?

我在我的 php 项目中使用弹性搜索,但在 Windows 10.

中遇到问题

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

我使用此命令修复了它,但我在 运行 docker-compose up -d[=21= 之前每次都在 运行 宁它]. 我不想每次都 运行 它。谁能告诉我如何在 windows docker 容器上永久设置 vm.max_map_count?

wsl -d docker-desktop

sysctl -w vm.max_map_count=262144

更新:

遗憾的是,并非所有 sysctl 选项都允许在运行时修改,请参阅 herevm. 前缀的 sysctl 没有命名空间,因此您只能选择修改 /etc/sysctl.conf.

原回答:

您可以在 docker-compose.yml 中调整每个容器的 sysctl 设置:

version: "3.0"
services:
  myservice:
    image: myimage
    # https://docs.docker.com/compose/compose-file/compose-file-v3/#sysctls
    sysctls:
      - vm.max_map_count=262144 # won't work, see the update

或者,您可以通过将 vm.max_map_count = 262144 行添加到 /etc/sysctl.conf 来为主机上的所有容器更改此设置。此文件中的设置在启动时应用。