首页 > 解决方案 > Elasticsearch Docker 容器因错误而崩溃:本机控制器进程已停止 - 无法启动新的本机进程

问题描述

我有一个简单的 docker 设置,我使用以下命令从 Docker Hub 中提取 Elastic search:

docker pull elasticsearch:7.6.2

提到了版本代码,因为它不适用于最新的标签。

然后我使用命令创建了一个 ElasticSearch 容器:

docker container run -d -p 9200:9200 --name elasticsearch elasticsearch:7.6.2

输入上述命令后,容器已创建并运行,但它运行了几秒钟,然后崩溃并显示错误消息:本机控制器进程已停止 - 无法启动新的本机进程。

以下是完整的错误 JSON

{"type": "server", "timestamp": "2020-04-07T19:28:05,721Z", "level": "INFO", "component": "o.e.x.m.p.NativeController", "cluster.name": "docker-cluster", "node.name": "c62b88f8807c", "message": "Native controller process has stopped - no new native processes can be started" }

我搜索并尝试了许多链接,我尝试重新创建容器,重新下载较低版本的图像,我什至尝试在 Docker > 设置 > 资源 > 高级中增加内存,但它仍然对我不起作用。

我已经尝试了以下链接的所有选项:https ://github.com/elastic/elasticsearch/issues/25067

请帮忙,先谢谢了!!!

标签: dockerelasticsearch

解决方案


当您在开发模式下运行 elasticsearch docker 时,您需要discovery.type=single-node避免生产引导检查,这会导致您的 docker 退出。

正如评论中提到的,添加discovery.type=single-node解决了这个问题,下面是完整的命令。

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch elasticsearch:7.6.2

推荐阅读