【问题标题】: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 运行。