docker - 无法更改 Docker 中 '/' 目录的权限

标签 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 /

最佳答案

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

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

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

因此,我切换到 Oracle 提供的不同 Oracle Linux 镜像:
FROM oracle/oraclelinux:6.6
它解决了这个问题。

关于docker - 无法更改 Docker 中 '/' 目录的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253020/

相关文章:

docker - 如何将大量的bamboo变量传递给docker容器?

docker - Jenkins更新Docker容器中的init.groovy.d文件

docker - 多阶段 dockerfile 跳过阶段

docker - 如何通过docker管理连接被拒绝错误elasticsearch-kibana-nginx?

docker - 为什么docker运行时说Unknown操作数而同一shell脚本在ubuntu机器中完美运行

docker - 如何使用 Dockerfile 将文件从主机复制到容器

docker - 无法从容器内访问Docker API

android - 如何从Android模拟器到Docker Machine的容器?

docker - 当kubernetes重启容器或者集群扩容时会发生什么?

docker - 在Docker中运行Corda 3.3