无法更改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