如何在Docker中以root用户身份运行Elasticsearch 5.2.1

我正在使用elasticsearch的Django项目。Django版本是1.9.2,Python版本是2.7。 我在Docker容器中部署项目,Docker容器通常以root用户身份运行进程。镜像成功构build,除弹性search外,一切工作正常。 我明白了

root@05641a637072:~/arches# elasticsearch-5.2.1/bin/elasticsearch [2017-04-19T07:37:13,347][WARN ][oebElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) ~[elasticsearch-5.2.1.jar:5.2.1] Caused by: java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:203) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-5.2.1.jar:5.2.1] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.2.1.jar:5.2.1] ... 6 more 

尝试启动ElasticSearch时出错,似乎没有办法解决这个问题。 ElasticSearch无法以root身份运行的原因是什么? docker集装箱内部的东西被隔离,根进程被认为是安全的。

不build议以root身份运行elasticsearch。 对于临时解决scheme,您可以通过启用属性es.insecure.allow.root来运行以下行。

 bin/elasticsearch -Des.insecure.allow.root=true