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。
我有一个 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。