amazon-web-services - 如何绕过免费AWS实例中的Elasticsearch Docker的硬内存要求

标签 amazon-web-services docker elasticsearch

我正在使用AWS免费套餐,可以在其中运行t1.micro实例,该实例具有1 GB的RAM。现在我通过遵循this official ES guide将Elasticsearch作为docker容器运行。

我正在使用Dockerfile,其内容如下:

FROM docker.elastic.co/elasticsearch/elasticsearch:7.5.1

RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch discovery-ec2

EXPOSE 9200 9300



现在,当我尝试运行它时,出现以下错误并退出。

Exception in thread "main" java.lang.RuntimeException: starting java failed with 1 output: #

There is insufficient memory for the Java Runtime Environment to continue.

Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.



我经历了this official ES以打开错误消息中提到的mmap设置,但这需要更改elasticsearch.yml。由于我是Docker的新手,所以我不知道
如何修改适用于容器的elasticsearch.yml或是否有另一种方法来修改此设置?

最佳答案

在搜索并浏览了互联网上的多个文档后,找到了解决方案。

我可以使用传递设置来减少docker命令本身中docker容器所需的最小和最大JVM,如下所示:
docker run -d -e ES_JAVA_OPTS="-Xms256m -Xmx512m" -ti -v /usr/share/elasticsearch/data elasticsearch-custom
注意,我将min减小为256 MB,将max减小为512,现在我可以启动docker了。

关于amazon-web-services - 如何绕过免费AWS实例中的Elasticsearch Docker的硬内存要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60454874/

相关文章:

windows - 如何在Docker-Windows中查看文件结构?

elasticsearch - 在 Elasticsearch 查询中使用脚本时,根据它们的长度过滤构面术语

amazon-web-services - 将 EC2 参数存储变量作为环境变量传递给 ECS 任务

amazon-ec2 - 我的 EBS 支持的 EC2 实例中的 EBS 卷会持续存在吗?

amazon-web-services - 如何在 redash 服务器后面设置代理

docker - 为什么docker gitlab/gitlab-runner使用 “/etc/gitlab-runner”和 “/home/gitlab-runner”作为VOLUME?

amazon-web-services - "Network bindings - not configured"使用 AWS Fargate 运行服务时

node.js - Dockerizing 一个 React App : The app starts inside the container, 但它不能从暴露的端口访问

hadoop - 单片ETL到分布式/可扩展解决方案,OLAP立方体到Elasticsearch/Solr

elasticsearch - Elasticsearch 2.3-通过查询删除文档