elasticsearch - 如何在docker中以root身份运行elasticsearch?
问题描述
这是我的码头文件:
FROM docker.elastic.co/elasticsearch/elasticsearch:6.6.0
RUN cat /etc/group
RUN chown -R root:root /usr/share/elasticsearch
RUN chmod -R 777 /usr/share/elasticsearch
RUN ls -ltr /usr/share/elasticsearch
RUN chmod -R 777 /usr/share/elasticsearch
ENV PATH=$PATH:/usr/share/elasticsearch/bin
RUN yum -y update
RUN yum -y install crontabs
RUN echo "root" > /etc/cron.allow
RUN echo "elasticsearch" >> /etc/cron.allow
RUN echo "" >> /etc/cron.allow
RUN chmod -R 777 /etc/cron.allow
RUN chown -R elasticsearch /etc/cron.d
RUN chmod -R 777 /etc/cron.d
RUN chown -R elasticsearch /var/spool/cron
RUN chmod -R 777 /var/spool/cron
RUN chown -R elasticsearch /etc/crontab
RUN chmod -R 777 /etc/crontab
RUN chown -R elasticsearch /etc/cron.d
RUN chmod -R 777 /etc/cron.d
RUN chown -R elasticsearch /var/run
RUN chmod -R 777 /var/run
COPY ./purge.sh /usr/share/elasticsearch
RUN touch /usr/share/elasticsearch/cron.log
ADD ./cron /etc/cron.d/cron_test
RUN chmod 0777 /etc/cron.d/cron_test
RUN chown -R elasticsearch /etc/cron.d/cron_test
USER elasticsearch
RUN crontab /etc/cron.d/cron_test
RUN chmod 777 /var/spool/cron/elasticsearch
CMD elasticsearch
USER root
EXPOSE 9200 9300
我想以 root 用户身份运行 elasticsearch,因为crontabjobs
也以 root 用户身份运行。当我构建 docker 文件并使用以下命令运行它时,我遇到了这个问题:
212744798@GH71T8S2E MINGW64 ~/Documents/docke
$ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" es
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
[2019-03-15T12:22:34,596][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] 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:163) ~[elasticsearch-6.6.0.jar:6.6.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.6.0.jar:6.6.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.6.0.jar:6.6.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.6.0.jar:6.6.0]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.6.0.jar:6.6.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.6.0.jar:6.6.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.6.0.jar:6.6.0]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.6.0.jar:6.6.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.6.0.jar:6.6.0]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.6.0.jar:6.6.0]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.6.0.jar:6.6.0]
... 6 more
如何使用 root 用户运行 elasticsearch?我需要更改任何权限吗?
解决方案
推荐阅读
- powershell - 一个作业如何在 Powershell 中创建其他作业
- mysql - SQL CONCAT 转 JSON
- php - 是否可以为所有用户只打开一个数据库连接?
- angular6 - Angular 6调用并将函数从父组件传递给子组件
- artifactory - 从 6.0.1 升级到 6.1.0 后 Artifactory 不会启动
- nginx - 将代理位置反向到 docker 容器
- java - 这行在 Java 中是什么意思
- angular - Angular 6 - 类型'Operator Function<{},{}> 上不存在属性'subscribe'?
- sql - IIF 函数 - 根据月份返回特定值
- android - Play Console 去混淆处理不起作用