我正在扩展程序from here的docker映像,并且我想更改一些配置并创建自己的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
用户,并且我看到了{{1 }}错误。我试图通过permission denied
命令更改Dockerfile中的所有权,但看到了chmod
错误。正在运行的容器的用户不是root用户,并且它无法访问root用户拥有的Operation not permitted
文件。我该如何解决这个问题?
答案 0 :(得分:2)
如果这实际上只是一个配置文件,我不会在其周围构建自定义映像。而是使用docker run -v
选项在运行时注入
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