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

时间:2017-01-26 08:14:16

标签: openshift openshift-origin


我需要在Openshift起源上使用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.

有什么方法可以解决这个问题吗? 感谢

2 个答案:

答案 0 :(得分:1)

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

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

您可以在文档中找到更多information about SCC and how to manage it

答案 1 :(得分:0)

通过使用Docker构建策略,您可以使用官方的tomcat映像而无需提升特权。您必须制作root组拥有的所有tomcat文件,如official docs支持任意用户ID 部分中所述。

我有以下带有tomcat官方高山映像的docker文件,其中删除了所有默认应用程序,递归更改了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文件夹之外的地方,或以类似方式调整这些文件夹的所有权。