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

时间:2015-08-27 15:04:29

标签: docker

我正在构建基于Oracle Linux 6.7的Docker镜像。 似乎创建的/目录的默认权限不正确:750。我想将其更改为755,但Dockerfile中的chmod命令似乎没有效果。

如何设置/目录的权限?我试过添加 USER root 在Dockerfile中但是也没有用。

Dockerfile

FROM    oraclelinux:6.7

RUN     ls -ld /
RUN     chmod 755 /
RUN     ls -ld /

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 /

2 个答案:

答案 0 :(得分:1)

我在网上搜索后发现主要问题是关于'/'目录的权限不正确而且无法通过简单地更改Dockerfile中的权限来修复它。

post表示它可能与umask有关,并且错误修复进入1.8.0版本。所以,第一步是升级Docker引擎。它没有解决问题。

另一个post建议当图像在一个文件系统上构建然后在另一个文件系统上使用时,'/'目录上的权限设置不正确。在我构建图像的系统上,使用了“devicemapper”。可能是Dockerhub的图像构建在不同的文件系统上。

所以,我转而使用Oracle提供的另一个Oracle Linux映像:

FROM oracle/oraclelinux:6.6

它解决了这个问题。

答案 1 :(得分:0)

这对我来说很好,我可以在运行时更改权限和/或我对容器有755的权限。

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

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

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