efk_elasticsearch_1 在安装 ElasticSearch 时退出,代码为 78

Dol*_*hin 7 elasticsearch docker

当我使用 docker-compose(CentOS 7.6\MAC OS) 安装 ElasticSearch 时,运行命令“ docker-compose up”,它抛出这个错误“ efk_elasticsearch_1 exited with code 78”,这是我的 docker-compose.yml:

version: '2'
services:

  elasticsearch:
    image: elasticsearch:7.2.0
    expose:
      - 9200
    ports:
      - "9200:9200"
Run Code Online (Sandbox Code Playgroud)

Lin*_*nPy 17

您需要在HOST终端而不是容器中运行它:

sudo sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)

如果您检查容器日志,您将看到如下内容:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Run Code Online (Sandbox Code Playgroud)

请注意,上述命令将在重新启动机器后重置,您需要设置该值/etc/sysctl.conf以使其永久生效。

看到这个

  • 是的,只需运行:`sudo sysctl -w vm.max_map_count=262144`并重新运行容器 (2认同)

小智 5

在生产或本地使用 Docker 镜像

在生产环境中在 Docker 中运行 Elasticsearch 时,适用以下要求和建议。

将 vm.max_map_count 设置为至少 262144 vm.max_map_count 内核设置必须至少设置为 262144 以供生产使用。

如何设置 vm.max_map_count 取决于您的平台。

Linux

要查看 vm.max_map_count 设置的当前值,请运行:

grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)

要在实时系统上应用该设置,请运行:

sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)

要永久更改 vm.max_map_count 设置的值,请​​更新 /etc/sysctl.conf 中的值。

带有适用于 Mac 的 Docker 的 macOS

vm.max_map_count 设置必须在 xhyve 虚拟机内设置:

从命令行运行:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty 按 Enter 并使用 sysctl 配置 vm.max_map_count:

sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)

要退出屏幕会话,请键入 Ctrl a d。

使用 Docker 的 Windows 和 macOS

vm.max_map_count 设置必须通过 docker-machine 设置:

docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)

**带有 Docker Desktop WSL 2 的 Windows **

vm.max_map_count 设置必须在 docker-desktop 容器中设置:

wsl -d docker-desktop
sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)