2016-12-28 50 views
1

新しく作成されたDocker 1.12.5のVMでElasticSearchコンテナを実行しようとしていますが、例外はPermission Deniedです。私が困惑しているのは、Docker 1.12.2を使用して、私の古いVMですべてがうまく動作することです。私は何が欠けていますか?コンテナ(ドッカー1.12.5)の実行時に許可が拒否されました

例外

Exception in thread "main" SettingsException[Failed to open stream for url [/usr/share/elasticsearch/config/elasticsearch.yml]]; nested: AccessDeniedException[/usr/share/elasticsearch/config/elasticsearch.yml]; 
Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/config/elasticsearch.yml 
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) 
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) 
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) 
    at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) 
    at java.nio.file.Files.newByteChannel(Files.java:361) 
    at java.nio.file.Files.newByteChannel(Files.java:407) 
    at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384) 
    at java.nio.file.Files.newInputStream(Files.java:152) 
    at org.elasticsearch.common.settings.Settings$Builder.loadFromPath(Settings.java:1067) 
    at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:88) 
    at org.elasticsearch.common.cli.CliTool.<init>(CliTool.java:107) 
    at org.elasticsearch.common.cli.CliTool.<init>(CliTool.java:100) 
    at org.elasticsearch.bootstrap.BootstrapCLIParser.<init>(BootstrapCLIParser.java:48) 
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:242) 
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) 

システム:Dockerfileを含む共有ホストフォルダと

  • インストールのVirtualBoxでWindows 10、
  • Xubuntuの16.04画像を、とelasticsearch.ymlの設定ファイルです。

ドッカーファイル:脇

FROM openjdk:8-jre 

ENV VERSION 2.4.1 

RUN groupadd -r elasticsearch && useradd -r -g elasticsearch elasticsearch 
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC8548582C1A2699A9D27D666CD88E42B4 
RUN set -x \ 
    && apt-get update && apt-get install -y --no-install-recommends apt-transport-https && rm -rf /var/lib/apt/lists/* \ 
    && echo 'deb http://packages.elasticsearch.org/elasticsearch/2.x/debian stable main' > /etc/apt/sources.list.d/elasticsearch.list 
RUN set -x \ 
    && apt-get update \ 
    && apt-get install -y --no-install-recommends elasticsearch=$VERSION \ 
    && rm -rf /var/lib/apt/lists/* 

ENV PATH /usr/share/elasticsearch/bin:$PATH 

WORKDIR /usr/share/elasticsearch 
RUN set -ex \ 
    && for path in \ 
     ./data \ 
     ./logs \ 
     ./config \ 
     ./config/scripts \ 
    ; do \ 
     mkdir -p "$path"; \ 
     chown -R elasticsearch:elasticsearch "$path"; \ 
    done 

COPY config ./config 
VOLUME /usr/share/elasticsearch/data 
VOLUME /usr/share/elasticsearch/logs 

EXPOSE 9200 9300 
USER elasticsearch 
CMD elasticsearch 

Dockerfile

は、 次のファイル構造住ん:画像を別のVM上で動作したよう

- config 
    - elasticsearch.yml 

を、私は、その構成を信じます正しいはずです。私は同じ問題(H2)を持つ別の画像があるように見えるので、問題はElasticSearchから来るとは思わない。私はDockerとLinuxの両方で初心者です。あなたが設定をコピーした後、ファイルのパーミッションを設定し

答えて

1

COPY config ./config 
RUN chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/config 

ます。また、rootとして/usr/share/elasticsearchディレクトリを作成し、chown可能性は、USER elasticsearch

として /usr/share/elasticsearchの内容を扱う残りのステップを完了します
+0

ありがとうございます。コピー後に権限を設定する。なぜ以前のVMで動作していたのか分かりませんが、今は満足しています。乾杯。 – Elegie

+0

WindowsからUNIXへのパーミッションマッピングは、常にちょっと混乱しています。あなたがソースを信頼できる唯一の時間は、それがLinuxファイルシステムであるときです。だから、間違っていないように、ドッカーファイルに必要なものを設定するのが最善です。 – Matt

関連する問題