我正在使用AWS免费套餐,在此之下,我可以运行具有1 GB RAM的t2.micro实例。现在,我通过按this official ES guide作为Elastic容器运行Elasticsearch。
我正在使用Dockerfile
,其内容如下:
FROM docker.elastic.co/elasticsearch/elasticsearch:7.5.1
运行/ usr / share / elasticsearch / bin / elasticsearch-plugin install --batch发现-ec2
EXPOSE 9200 9300
现在,当我尝试运行它时,出现以下错误并退出。
线程“主”中的异常java.lang.RuntimeException:启动Java失败,显示1输出:#
没有足够的内存来使Java Runtime Environment继续。
本机内存分配(mmap)无法映射986513408字节以提交保留的内存。
我经历了this official ES以转到错误消息中提到的mmap
设置,但这需要更改elasticsearch.yml
和由于我是Docker的新手,所以我不知道如何修改适用于容器的elasticsearch.yml
或是否有另一种方法来修改此设置?
在搜索并浏览了互联网上的多个文档后,找到了解决方案。
我可以使用pass设置来减少docker命令本身中的docker容器所需的最小和最大JVM:
docker run -d -e ES_JAVA_OPTS="-Xms256m -Xmx512m" -ti -v /usr/share/elasticsearch/data elasticsearch-custom
注意,我将最小减小为256 MB
,将最大减小为512
,现在我可以启动泊坞窗了。