2016-06-07 40 views
0

我正在使用以下Dockerfile來使用Docker構建Solr。安裝目錄時的Docker用戶權限

FROM solr:5.5 
ENV SOLR_HOME=/opt/solr/server/solr/cores 
RUN mkdir ${SOLR_HOME} 
RUN chown -R solr:solr ${SOLR_HOME} 
VOLUME ["${SOLR_HOME}"] 
EXPOSE 8983 

我嘗試運行以下命令泊塢窗安裝一個主機目錄的容器:

docker run --restart=always -d --name solr-demo \ 
--privileged=true -p 8983:8983 \ 
-v /data/solr_demo:/opt/solr/server/solr/cores \ 
solr-test:latest 

我也複製所需solr.xml文件到data/solr_demo。當我運行docker run命令我碰到下面的錯誤:

stat: cannot stat ‘/opt/solr/server/solr/cores’: No such file or directory 42146d74b446ba4784fd197688e3210f294aad8755ae730cc559132720bcc35a 
Error response from daemon: Container 42146d74b446ba4784fd197688e3210f294aad8755ae730cc559132720bcc35a is restarting, wait until the container is running 
+0

什麼'LS -ld /數據/主機上solr_demo'的輸出?另外,docker run的輸出是什麼--rm --privileged = true solr-test:latest ls -l/opt/solr/server/solr/cores'? – BMitch

+0

您好請找到輸出[root @ ip-10-0-2-15 data]#ls -ld/data/solr-demo1 drwxr-xr-x。 2 root root 21 Jun 7 12:20/data/solr-demo1 [root @ ip-10-0-2-15 build]#docker run --rm --privileged = true solr-test:latest ls -l/opt/solr/server/solr/cores 共0 –

回答

0

從您的評論,似乎你安裝一個不存在的目錄爲您的音量。嘗試將/ data/solr_demo作爲卷掛載到/ data/solr_demo的命令。

docker run --restart=always -d --name solr-demo \ 
--privileged=true -p 8983:8983 \ 
-v /data/solr_demo1:/opt/solr/server/solr/cores \ 
solr-test:latest 
+0

嘿BMitch感謝您的關注。小小的更新。如果我將chmod 777指定給data/solr_demo1,那麼它可以正確地將solr.xml放置在其中。我應該做些什麼來消除權限,並且能夠根據需要安裝核心目錄。 –

+0

使用基於主機的卷時,您當前需要鏡像用戶在主機和容器內使用的uid。如果你在主機上運行「id」,並運行「docker run --rm solr-test:latest id」,你應該看到每邊都有uid。您可能會發現修改容器中用戶的組成員資格以便與您所屬的組相匹配(向您的Dockerfile添加「RUN usermod -aG ...」)會更容易。另一種選擇是切換到命名卷。 – BMitch

+0

嘗試添加usermod命令-ag 1000 Solr的,但沒有運氣,它說用戶已經使用的資源1. –

0

如果真的是一個用戶的問題(它提醒了我一些問題,我在容器阿帕奇添加),你應該考慮使用古藪。 https://github.com/tianon/gosu

它可以讓你運行和交換用戶正確,並從本地用戶和用戶在容器內有一個很好的映射。

希望這將是有益的。