Linux 如果目录是在docker构建期间添加的,如何修复访问该目录的被拒绝权限?
我使用以下Linux 如果目录是在docker构建期间添加的,如何修复访问该目录的被拒绝权限?,linux,docker,dockerfile,file-permissions,chown,Linux,Docker,Dockerfile,File Permissions,Chown,我使用以下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/s
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
目录中的文件和文件夹的权限
请注意,我正在从Windows7运行docker版本。我的docker版本是
18.03.0-ce
我在这里有另一个答案,这个答案是错误的(但仍然解决了您的问题:),但是现在我在您的docker文件中看到了打字错误。让我们来看看这条线。
COPY --chown=solr:solr ./services-core/search/A12Core /A12Core/
COPY
命令检查容器中是否存在目标路径。如果不是,则在复制之前创建它
/services-core/search
获取12个核心
/A12Core
是否存在root:root
创建它A12Core
的内容复制到新创建的A12Core
/A12Core
中,但它属于根目录
,您无法访问它
既然solr
docker image已经设置了USER solr
,那么接下来的路就是
RUN mkdir /A12Core
COPY ./services-core/search/A12Core /A12Core
作为
USER
指令设置用户名。。。用户组。。。对于RUN
、CMD
和ENTRYPOINT
在Dockerfile
中遵循的任何指令
您的目录没有执行权限:
drw-r--r-- 3 solr solr 4096 Aug 31 14:21 conf
否则,您将无法根据Linux文件系统权限将cd放入目录。您可以使用chmod在主机中修复此问题:
chmod +x conf
如果在Dockerfile中执行此命令(使用运行
行),将导致任何修改的文件复制到新层,因此如果递归运行此命令,可能会使图像大小加倍,因此建议尽可能在构建主机上修复此命令。这可能会有所帮助:和。另请参见。当您复制Dockerfile中的目录时,docker复制的是目录的内容,而不是目录本身。所以你答案中的第四步是不正确的。