【问题标题】:Openshift : failed to start docker imageOpenshift:无法启动 docker 映像
【发布时间】:2020-12-10 09:11:21
【问题描述】:

我有一个 docker 镜像,该镜像随后安装了基础镜像 ubuntu 和 tomcat。在 docker build 之后,我可以在本地运行 docker 映像而没有任何问题。但是部署在OpenShift上时,启动失败。

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/ 
EXPOSE 8080
CMD /usr/local/tomcat/bin/catalina.sh run

【问题讨论】:

    标签: docker tomcat openshift


    【解决方案1】:

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

    这是修改后的 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 运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 2017-04-16
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多