为什么ElasticSearch不允许以root身份运行?

时间:2018-01-30 17:16:50

标签: docker elasticsearch

我在Docker容器中部署ElasticSearch,它通常以root用户身份运行进程。我得到了

"org.elasticsearch.bootstrap.StartupError: java.lang.RuntimeException: cannot run elasticsearch as root"
尝试启动ElasticSearch时出现

错误。

ElasticSearch无法以root身份运行的原因是什么?

在docker容器内部,事物被隔离,根进程被认为是安全的。我可能能够将我的映像配置为以非root身份运行,但它需要大量繁重工作并且对我们的部署模型具有反模式。

我也尝试过没有docker容器,但是出现了以下错误。

./ elasticsearch

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.at

org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)

请参阅日志以获取完整的错误详情。

1 个答案:

答案 0 :(得分:0)

已经讨论了几次。来自Elastic维护的Docker镜像的Quoting

  

Elasticsearch的检查不允许以root身份运行它。这个   已在讨论过   https://discuss.elastic.co/t/why-is-it-elasticsearch-is-not-allowed-to-run-as-root/60413/2   并且在docker容器中以root身份运行进程并不是最好的   实践。您可以在上述讨论中看到一些原因,   在   https://forums.docker.com/t/root-user-or-non-root-user-inside-container/966/10,   http://blog.dscpl.com.au/2015/12/don-run-as-root-inside-of-docker.html   和其他地方。容器的风险尤其严重   像Elasticsearch,用户经常绑定装载主机目录   具有写访问权。

PS:如果您不想构建自己的图像,可以使用官方维护的图像:https://www.docker.elastic.co