我正在构建基于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 /
答案 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