Docker + SLES15:无法访问Docker容器内的文件:ls: 无法访问'<directory/file name>':操作不允许。

7

我是docker的新手,正在尝试从SLES 15基础镜像创建docker文件:

FROM <base image - SLES 15 >

LABEL <label> \
    Version="1.0"

在 docker-compose.yml 文件中,我提到了:
working_dir: $PWD
volumes:
      - $PWD/../../:$PWD/../../

在我启动Docker容器时,出现以下错误,无法访问任何文件或目录:

 ls: cannot access '<directory/file name>': Operation not permitted 
total 0
d????????? ? ? ? ?            ? <directory-name>

我尝试了一些建议的解决方案,例如:

  1. 使用chown/chmod设置文件权限
  2. 禁用selinux

你有关于这个问题的根本原因和可能的解决方案的想法吗?

来自stackoverflow的类似问题:使用SLES15和*Suse容器时,在Docker容器中没有访问权限


我尝试使用chown/chmod进行权限设置。我已经验证了id(user和group)是0,而且容器内的用户是root。我还尝试将其设置为本地机器的用户组,并在其中运行容器。但在尝试执行“ls -n”或“ls -l”时仍然会出现“ls: cannot access '<directory/file name>': Operation not permitted”的错误提示。 - Mangesh Patil
我尝试使用与主机相同的UID和GID启动容器:'docker-compose run --user 1000:1000 <image-name> bash'。 然而即使这样,仍然面临着相同的问题。 - Mangesh Patil
我更新了我的docker文件,包括以下命令: ``RUN useradd -ms /bin/bash -u 1000 -U dockerbuilduser &&
echo "dockerbuilduser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/dockerbuilduser &&
mkdir /home/dockerbuilduser/.gradle &&
chown 1000:1000 /home/dockerbuilduser &&
chmod 777 -R /home/dockerbuilduser &&
chmod 0400 /etc/sudoers.d/dockerbuilduserUSER dockerbuilduser``。创建了一个与主机用户具有相同uid的用户,并分配了所有权。但是,当我执行cd /home/dockerbuilduser然后ls -l时,我遇到了权限错误,新创建的文件夹也是一样的错误。
- Mangesh Patil
1
在使用 --privileged 标志运行容器后,我可以无需权限错误地运行 ls -l。然而,据我所知,不建议使用特权容器。那么,在没有特权容器的情况下,我该如何解决这个问题呢? - Mangesh Patil
1
今天我能够推断出可能的问题。实际上,我的错误在于尝试在基于CentOS的主机上运行基于SLES的Docker容器。这就是权限问题的原因。当我使用基于SLES的主机时,没有权限问题。对于造成的混淆,我很抱歉。感谢Noam提供的所有输入。它帮助我理解了Docker的概念。 - Mangesh Patil
显示剩余9条评论
2个回答

2

由于我在CentOS主机上运行基于SLES的Docker容器,所以出现了权限问题。如果我使用基于SLES的主机,就可以无需任何权限问题地运行该容器。


有其他解决方案吗?能否运行这样的容器? - Tarator

0

在我的情况下,我通过升级Docker到最新版本来解决了这个问题。

参考链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接