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

Unable to run application using root user on Openshift


我需要在 Openshift 源上使用 tomcat:latest 图像。我知道此映像以 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)和正在使用 运行ning 容器的用户。他们是不同的。

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

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

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

我有以下带有官方 tomcat alpine 图像的 docker 文件,我在其中删除所有默认应用程序,递归更改 tomcat 目录的所有权,然后将我的工件复制到网络应用

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 文件夹之外的某处,或者以类似方式调整这些文件夹的所有权。