openshift pod 用户权限设定
openshift v3 设计默认不允许在pod中使用root,在启动pod时会给一个uid值,这两天发现这个uid值是固定的,但是不同用户的uid值不相同.
这个可不可以理解为pod在启动的时候,使用了类似 docker run -u 这个参数去run容器的呢?
这样就出现了一个问题。
在dockerfile中 指定了USER 并且CMD 一个脚本,pod启动后,CMD运行的脚本是以这个uid来启动的,不是指定的USER来启动,由于权限问题导致启动失败。
例如
FROM registry.access.redhat.com/rhel7
MAINTAINER charles zhang
yum&&repo
RUN curl http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm -O && \
rpm -ivh epel-release-7-5.noarch.rpm && \
yum --enablerepo=epel install nss_wrapper gettext git unzip pwgen mariadb --nogpgcheck -y && \
useradd -d /app -u 10001 tomcat && \
git clone http://xxxxxx.git && \
mv portal-dockerbasicfile-devops/app /app && \
mv /app/app/* /app && \
yum install /app/jdk-8u65-linux-x64.rpm --nogpgcheck -y && yum clean all && \
chown tomcat:tomcat /app -R
USER tomcat
set env
ENV TOMCAT_MAJOR_VERSION 7
ENV TOMCAT_MINOR_VERSION 7.0.55
ENV CATALINA_HOME /app/apache-tomcat-7.0.55
set jdk env
ENV JAVA_HOME /usr/java/jdk1.8.0_65
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV MYSQL_HOSTNAME database
ENV MYSQL_ROOT_PASSWORD 123456
RUN unzip /app/apache-tomcat-7.0.55/webapps/dashboard.war -d /app/apache-tomcat-7.0.55/webapps/dashboard && \
chmod 777 /app -R
VOLUME
CMD
EXPOSE 8080
在build完成之后,tomcat 启动时会报错,war中文件找不到,war包提前解压过了,并且赋值为777,手动rsh进入pod 切换到tomcat用户,启动成功
官方在docs文档中
https://access.redhat.com/docu ... ages/
推荐使用nss_wraper 去把openshift 给予的uid值设置为dockerfile的USER的uid,我添加了这段代码到启动脚本中,发现问题依旧。
希望能给予解决思路,多谢
4 个回复
uptoknow - 80 IT男
赞同来自:
https://docs.openshift.org/lat ... rfile
你可以修改SCC
我另一个女友叫五姑娘
赞同来自:
没有这种权限可以修改
uptoknow - 80 IT男
赞同来自:
<ol><li>最好不要让你的程序用root权限运行,你可以修改你的Dockerfile让其可以以任何用户运行,openshift用SCC控制pod的运行权限</li><li>你可以修改SCC让你的pod可以以你Dockerfile指定的用户运行</li></ol>
zhanglianx111 - 一句话介绍
赞同来自:
我也遇到了同样的问题,有人解决了吗?