gpt4 book ai didi

linux - 非 root 用户的容器内容器文件权限问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:11 26 4
gpt4 key购买 nike

我正在扩展程序的 docker 镜像 from here我想更改一些配置并创建我自己的 docker 镜像。我编写了一个 Dockerfile,如下所示,并替换了此图中的 server.xml 文件:

FROM exoplatform/exo-community
COPY server.xml /opt/exo/conf
RUN chmod 777 /opt/exo/conf/server.xml

当我创建 docker 镜像并从镜像运行实例时,容器的运行程序无法访问文件 server.xml,因为它的所有者是 root 用户,并且我看到 permission returned 错误。我尝试通过 chmod 命令更改 Dockerfile 中的所有权,但看到“不允许操作”错误。正在运行的容器的用户不是 root 用户,它无法访问 root 用户拥有的 server.xml 文件。我该如何解决这个问题?

最佳答案

如果这实际上只是一个配置文件,我不会围绕它构建自定义图像。相反,使用 docker run -v 选项在运行时注入(inject)它

docker run \
-v $PWD/server.xml:/opt/exo/conf/server.xml \
... \
exoplatform/exo-community

(您可能仍会遇到相同的权限问题。)

在您的 Dockerfile 方法中,the base image runs as an alternate USER但是一个COPY默认情况下,指令使文件归 root 所有。从相对较新的 Docker(18.03;如果您在 CentOS/RHEL 7 上使用 Docker 1.13,这将不起作用)开始,您应该能够

COPY --chown=exo server.xml /opt/exo/conf

或者,如果这不起作用,您可以显式切换到 root 用户并返回

COPY server.xml /opt/exo/conf
USER root
RUN chown exo /opt/exo/conf/server.xml
USER exo

关于linux - 非 root 用户的容器内容器文件权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58362276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com