Problem

You want to run ElasticSearch using docker, but the container immediately stops again using this error message

elasticsearch exited with code 78

or

elasticsearch2 exited with code 78

Solution:
If you look through the entire log message, you’ll find lines like

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

解决:

切换到root用户

执行命令:

1
sysctl -w vm.max_map_count=262144

查看结果:

1
sysctl -a|grep vm.max_map_count

显示:

vm.max_map_count = 262144

上述方法修改之后,如果重启虚拟机将失效,所以:

解决办法:

/etc/sysctl.conf文件最后添加一行

1
vm.max_map_count=262144

即可永久修改

vm.max_map_count参数详解

vm.max_map_count是一个与内核虚拟内存子系统相关的参数,用于控制进程可以拥有的内存映射区域的最大数量。它通常用于限制一个进程可以打开的文件数量,特别是在使用大量内存映射文件的情况下。

在Linux系统上,vm.max_map_count参数的默认值通常是较小的数值,例如65530。然而,对于一些需要大量内存映射的应用程序或者特定的使用场景,可能需要增加该参数的值,以便支持更多的内存映射区域。