无法在Openshift上使用root用户运行应用程序

无法在Openshift上使用root用户运行应用程序,openshift,openshift-origin,Openshift,Openshift Origin,我需要在Openshift origin上使用tomcat:最新图像。我知道此映像以root用户的身份运行,但我希望它通过向开发人员用户授予群集管理权限来工作: $ oadm policy add-cluster-role-to-user cluster-admin developer 不幸的是,我仍然得到: Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load WARNING: Unable to load se


我需要在Openshift origin上使用tomcat:最新图像。我知道此映像以root用户的身份运行,但我希望它通过向开发人员用户授予群集管理权限来工作:

$ oadm policy add-cluster-role-to-user cluster-admin developer 
不幸的是,我仍然得到:

Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Permissions incorrect, read permission is not allowed on the file.
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina load
WARNING: Permissions incorrect, read permission is not allowed on the file.
Jan 26, 2017 8:05:34 AM org.apache.catalina.startup.Catalina start
SEVERE: Cannot start server. Server instance is not configured.
我有什么办法可以绕开这件事吗?
谢谢

OpenShift本身中有一些用户(如您的示例中的
developer
)和用于运行容器的用户。他们是不同的

您使用的命令用于第一类用户。您需要配置安全上下文约束(SCC),以允许
developer
使用任何UID运行容器(这里我指的是主机操作系统中存在的系统用户)


您可以在文档中找到更多信息。

通过使用Docker构建策略,您可以在不提升权限的情况下使用正式的tomcat映像。您必须使
root
组拥有的所有tomcat文件支持任意用户ID部分,如中所述

我有下面的docker文件和一个正式的tomcat alpine映像,在这里我删除了所有默认的应用程序,递归地更改tomcat目录的所有权,然后在webapps中复制我的工件

FROM tomcat:jre8-alpine
RUN rm -rf /usr/local/tomcat/webapps/* && \
    chgrp -R 0 /usr/local/tomcat/ && \
    chmod -R g=u /usr/local/tomcat/
ADD ROOT.war /usr/local/tomcat/webapps/

只需确保您的应用程序没有将日志写入
/var/log
或默认tomcat文件夹之外的某个位置,或者以类似方式调整这些文件夹的所有权。

非常感谢您的建议