我正在使用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/