2016-06-07 53 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

它可以让你运行和交换用户正确,并从本地用户和用户在容器内有一个很好的映射。

希望这将是有益的。