我正在构建基于 Oracle Linux 6.7 的 Docker 映像。看来/创建的目录的默认权限不正确:750。我想将其更改为755,但chmodDockerfile中的命令似乎没有效果。
如何设置/目录的权限?我尝试添加
USER root
Dockerfile 但也不起作用。
Dockerfile
FROM oraclelinux:6.7
RUN ls -ld /
RUN chmod 755 /
RUN ls -ld /
Run Code Online (Sandbox Code Playgroud)
输出来自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
Run Code Online (Sandbox Code Playgroud)
如果我运行容器并手动更改权限,它会起作用:
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 /
Run Code Online (Sandbox Code Playgroud)
在网上搜索后发现,主要问题是“/”目录的权限不正确,并且无法通过简单地更改 Dockerfile 内的权限来修复。
这篇文章表明它可能与umask1.8.0 版本中的错误修复有关。因此,第一步就是升级 Docker 引擎。它没有解决问题。
另一篇文章表明,当在一个文件系统上构建图像然后在另一个文件系统上使用时,“/”目录的权限设置不正确。在我构建图像的系统上,使用了“devicemapper”。Dockerhub 中的映像可能是构建在不同的文件系统上的。
因此,我切换到 Oracle 提供的另一个 Oracle Linux 映像:
FROM oracle/oraclelinux:6.6
它解决了问题。
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |