我使用以下Dockerfile
扩展docker镜像:
FROM solr:6.6
COPY --chown=solr:solr ./services-core/search/A12Core /A12Core/
请注意,
solr:6.6
具有USER solr
语句。当运行从该Dockerfile构建的容器时,尝试访问
/A12Core
下的文件或目录时,权限被拒绝:$ docker run -it 2f3c58f093e6 /bin/bash
solr@c091f0cd9127:/opt/solr$ cd /A12Core
solr@c091f0cd9127:/A12Core$ cd conf
bash: cd: conf: Permission denied
solr@c091f0cd9127:/A12Core$ ls -l
total 8
drw-r--r-- 3 solr solr 4096 Aug 31 14:21 conf
-rw-r--r-- 1 solr solr 158 Jun 28 14:25 core.properties
solr@c091f0cd9127:/A12Core$ whoami
solr
solr@c091f0cd9127:/A12Core$
为了获得访问
/A12Core
目录中的文件和文件夹的权限,我需要怎么做?请注意,我从Windows 7运行docker build。我的docker版本是
18.03.0-ce
。 最佳答案
我在这里有另一个答案,这是错误的(但仍然可以解决您的问题:),但是现在我在您的Dockerfile中看到了拼写错误。让我们看一下这条线。
COPY --chown=solr:solr ./services-core/search/A12Core /A12Core/
COPY
命令检查容器中的目标路径是否存在。如果没有,它将在复制之前创建它。A12Core
中获取./services-core/search
。 /A12Core
是否存在。 root:root
权限创建它。 A12Core
的内容复制到新创建的A12Core
。 最后,您在
/A12Core
中拥有了所有内容,但它属于root
,因此您无法访问它。由于
solr
docker镜像已经设置了USER solr
,因此方法是RUN mkdir /A12Core
COPY ./services-core/search/A12Core /A12Core
作为the docs say