Openshift:无法启动 docker 图片

Openshift : failed to start docker image

我有一个 docker 映像,其中基本映像 ubuntu 和稍后安装在该映像上的 tomcat。在 docker 构建之后,我可以在本地 运行 docker 图像,没有任何问题。但是部署到OpenShift上,启动失败。

Docker 文件

FROM ubuntu:latest
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install openjdk-8-jdk wget
RUN wget http://apache.stu.edu.tw/tomcat/tomcat-8/v8.5.58/bin/apache-tomcat-8.5.58.tar.gz -O /tmp/tomcat.tar.gz && \
    cd /tmp && tar xvfz tomcat.tar.gz && \
    cp -Rv /tmp/apache-tomcat-8.5.58/* /usr/local/tomcat/ 
EXPOSE 8080
CMD /usr/local/tomcat/bin/catalina.sh run

默认情况下,OpenShift Container Platform 运行s 容器使用任意分配的用户 ID。对于支持 运行ning 作为任意用户的映像,映像中的进程可能写入的目录和文件应归根组所有,并且 read/writable 由该组所有。要执行的文件也应该有组执行权限。

这里是修改后的Dockerfile

FROM ubuntu:latest
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install openjdk-8-jdk wget
RUN wget http://apache.stu.edu.tw/tomcat/tomcat-8/v8.5.58/bin/apache-tomcat-8.5.58.tar.gz -O /tmp/tomcat.tar.gz && \
    cd /tmp && tar xvfz tomcat.tar.gz && \
    cp -Rv /tmp/apache-tomcat-8.5.58/* /usr/local/tomcat/ 

#Add a user ubuntu with UID 1001
RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1001 ubuntu && \
   chown -R ubuntu:root /usr/local/tomcat && \
   chgrp -R 0 /usr/local/tomcat && \
   chmod -R g=u /usr/local/tomcat

#Specify the user with UID
USER 1001

EXPOSE 8080    
CMD /usr/local/tomcat/bin/catalina.sh run

请参阅来自 Openshift

Guideline 上的“支持任意用户 ID”部分

要放松集群中的安全性,以便图像不会被强制 运行 作为预分配的 UID,而不授予每个人访问特权 SCC 的权限:

授予所有经过身份验证的用户访问 anyuid SCC 的权限:

$ oc adm policy add-scc-to-group anyuid system:authenticated

如果在 Dockerfile 中未指定 USER,这允许图像 运行 作为根 UID。