无法更改Docker中“/”目录的权限

我正在构build基于Oracle Linux 6.7的Docker镜像。 看起来,创build的/目录的默认权限是不正确的:750.我想将其更改为755,但Dockerfile中的chmod命令似乎没有任何作用。

我如何设置/目录的权限? 我已经尝试在Dockerfile中添加USER root ,但是也没有工作。

Dockerfile

 FROM oraclelinux:6.7 RUN ls -ld / RUN chmod 755 / RUN ls -ld / 

docker build -t oraclelinux:fubar .输出docker build -t oraclelinux:fubar .

 Sending build context to Docker daemon 2.048 kB Sending build context to Docker daemon Step 0 : FROM oraclelinux:6.7 ---> cfc75fa9f295 Step 1 : RUN ls -ld / ---> Running in ed83a5c1f462 drwxr-x--- 21 root root 4096 Aug 27 14:41 / ---> 2a1f11648594 Removing intermediate container ed83a5c1f462 Step 2 : RUN chmod 755 / ---> Running in 6f045908c424 ---> 1e44793993cb Removing intermediate container 6f045908c424 Step 3 : RUN ls -ld / ---> Running in 0b1b10022e79 drwxr-x--- 21 root root 4096 Aug 27 14:41 / ---> f97f3e6711c5 Removing intermediate container 0b1b10022e79 Successfully built f97f3e6711c5 

如果我运行容器并手动更改权限,它将工作:

docker run -ti oraclelinux:fubar

 [root@1e73ebab4b8c /]# ls -ld / drwxr-x--- 21 root root 4096 Aug 27 14:56 / [root@1e73ebab4b8c /]# chmod 755 / [root@1e73ebab4b8c /]# ls -ld / drwxr-xr-x 21 root root 4096 Aug 27 14:56 / 

我在网上search后发现,主要的问题是关于“/”目录有不正确的权限,它不能通过更改Dockerfile中的权限来解决。

这篇文章暗示它可能与umask有关,bug修复进入1.8.0版本。 所以,第一步是升级Docker引擎。 它没有解决问题。

另一篇文章提出,当一个文件系统上构build一个映像,然后在另一个文件系统上使用映像时,“/”目录的权限设置不正确。 在我正在构build映像的系统上,使用了“devicemapper”。 这可能是Dockerhub的图像build立在不同的文件系统上。

所以,我切换到Oracle提供的另一个Oracle Linux映像:

FROM oracle/oraclelinux:6.6

并解决了这个问题。

这对我来说工作正常,我可以更改权限和/或我在我的容器上有755权限,当我运行它。

我会检查您的docker家目录中的权限。 即/var/lib/docker

您可以检查图像以及容器的存储位置

 ls -ld /var/lib/docker/aufs/diff ls -ld /var/lib/docker/aufs/mnt