非生产模式下的 Elasticsearch docker 容器以消除 vm.max_map_count=262144 要求

Pet*_*ahn 6 elasticsearch docker

如何配置 elasticsearch docker 容器 (elasticsearch:7.5.0) 以使用更少的资源并在非生产模式下运行?

我想在 Jenkins 和我的桌面上运行容器,并且正在满足这个弹性文档中在生产中运行 docker 图像的要求

我想弄清楚如何修改我复制到容器中的 elasticsearch.yml 以将其配置为将容器设置为资源密集程度较低的模式。

有人知道怎么做吗?

Ami*_*wal 6

您可以在开发模式下运行您的 docker 并通过关注单节点 ES 集群上的官方 ES 链接创建单节点 ES 集群。正如此链接中所述。

要启动单节点 Elasticsearch 集群以进行开发或测试,请指定单节点发现以绕过引导程序检查:

简而言之,您需要做的就是添加-e "discovery.type=single-node"您的 docker 命令,这将启用开发模式,然后您不必满足生产环境的硬限制,即它绕过引导程序检查

可以在此处找到有关您的设置以及如何将其关闭的更多信息

node.store.allow_mmap。这是一个布尔设置,指示是否允许内存映射。默认是允许的。

所以,如果-e "discovery.type=single-nodeenv. 不关闭它,然后你可以在你的elasticsearch.yml.


Edi*_*ine 5

如果您正在阅读本文试图了解如何在使用时执行此操作docker-compose

使用环境键

docker-compose.yml:

  elasticsearch:
    environment:
      - discovery.type=single-node
Run Code Online (Sandbox Code Playgroud)

使用自定义 elasticsearch.yml

创建elasticsearch.yml

discovery:
  type: single-node
Run Code Online (Sandbox Code Playgroud)

在 docker-compose.yml 中将其作为卷安装在容器上:

  elasticsearch:
    volumes:
      - /path-to/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
Run Code Online (Sandbox Code Playgroud)

确保第一部分实际上是一个路径,它必须以/或开始,./否则它将把它当作一个命名卷。第二部分是容器内的路径,因此可以保持原样。

该文件必须位于您在 Docker 应用程序中启用了文件共享的位置。如果您还没有,请在首选项 > 资源 > 文件共享中进行设置。