OpenShift3 Pro没有';t运行在minishift上本地运行的简单Centos映像

OpenShift3 Pro没有';t运行在minishift上本地运行的简单Centos映像,openshift,redhat-containers,Openshift,Redhat Containers,我有一个简单的Centos6 docker图像: FROM centos:6 MAINTAINER Simon 1905 <simbo@x.com> RUN yum -y update && yum -y install httpd && yum clean all RUN sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf && \ chown apache:a

我有一个简单的Centos6 docker图像:

FROM centos:6
MAINTAINER Simon 1905 <simbo@x.com>
RUN yum -y update && yum -y install httpd && yum clean all
RUN sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf && \
  chown apache:apache /var/log/httpd && \
  chmod ug+w,a+rx /var/log/httpd && \
  chown apache:apache /var/run/httpd
RUN mkdir -p /var/www/html && echo "hello world!" >> /var/www/html/index.html
EXPOSE 8080
USER apache
CMD /usr/sbin/httpd -D FOREGROUND

它失败是因为您的映像希望作为特定用户运行

在Minishift中,这是允许的,因为它能够以root用户身份运行映像

在OpenShift Online上,您的图像将作为任意分配的UID运行,永远不能作为选定的UID运行,也不能作为根用户运行

如果您只想采用托管静态文件的方式,请参阅:

这是一个S2I构建器,用于获取Apache的静态文件并在容器中运行它们

您可以通过运行以下命令将其用作S2I生成器:

oc new-app centos/httpd-24-centos7~<repository-url> --name httpd
oc expose svc/httpd
oc新应用程序centos/httpd-24-centos7~--名称httpd
oc公开svc/httpd
或者,如果您想尝试并定制衍生图像,也可以创建衍生图像


不管是哪种方式,如果您想构建自己的映像,请查看它是如何实现的。

它失败了,因为您的映像希望以特定用户的身份运行

在Minishift中,这是允许的,因为它能够以root用户身份运行映像

在OpenShift Online上,您的图像将作为任意分配的UID运行,永远不能作为选定的UID运行,也不能作为根用户运行

如果您只想采用托管静态文件的方式,请参阅:

这是一个S2I构建器,用于获取Apache的静态文件并在容器中运行它们

您可以通过运行以下命令将其用作S2I生成器:

oc new-app centos/httpd-24-centos7~<repository-url> --name httpd
oc expose svc/httpd
oc新应用程序centos/httpd-24-centos7~--名称httpd
oc公开svc/httpd
或者,如果您想尝试并定制衍生图像,也可以创建衍生图像


无论哪种方式,如果您想构建自己的应用程序,请查看它是如何实现的。

来自redhat enterprise文档,网址为:

默认情况下,OpenShift容器平台使用 任意分配的用户ID。这提供了额外的安全性 防止由于容器引擎而逃逸容器的进程 漏洞,从而在主机上实现升级权限 节点。要使映像支持以任意用户身份运行,请选择目录 图像中的进程可能写入的文件应 由根组拥有,并且可由该组读/写。归档到 被执行的还应具有组执行权限

因此,在这种情况下,在OpenShift 3 Online Pro上运行的修改后的Docker文件是:

FROM centos:6
MAINTAINER Simon 1905 <simbo@x.com>
RUN yum -y install httpd && yum clean all
RUN sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf && \
  chown apache:0 /etc/httpd/conf/httpd.conf && \
  chmod g+r /etc/httpd/conf/httpd.conf && \
  chown apache:0 /var/log/httpd && \
  chmod g+rwX /var/log/httpd && \
  chown apache:0 /var/run/httpd && \
  chmod g+rwX /var/run/httpd
RUN mkdir -p /var/www/html && echo "hello world!" >> /var/www/html/index.html && \
  chown -R apache:0 /var/www/html && \
  chmod -R g+rwX /var/www/html
EXPOSE 8080
USER apache
CMD /usr/sbin/httpd -D FOREGROUND
来自centos:6
维护者西蒙1905
运行yum-y安装httpd&&yum全部清除
运行sed-i“s/Listen 80/Listen 8080/”/etc/httpd/conf/httpd.conf&&\
chown apache:0/etc/httpd/conf/httpd.conf&&\
chmod g+r/etc/httpd/conf/httpd.conf&&\
chown apache:0/var/log/httpd&&\
chmod g+rwX/var/log/httpd&&\
chown apache:0/var/run/httpd&&\
chmod g+rwX/var/run/httpd
运行mkdir-p/var/www/html&&echo“helloworld!”>/var/www/html/index.html&&\
chown-R apache:0/var/www/html&&\
chmod-rg+rwX/var/www/html
曝光8080
用户apache
CMD/usr/sbin/httpd-D前台

来自redhat enterprise文档,网址为:

默认情况下,OpenShift容器平台使用 任意分配的用户ID。这提供了额外的安全性 防止由于容器引擎而逃逸容器的进程 漏洞,从而在主机上实现升级权限 节点。要使映像支持以任意用户身份运行,请选择目录 图像中的进程可能写入的文件应 由根组拥有,并且可由该组读/写。归档到 被执行的还应具有组执行权限

因此,在这种情况下,在OpenShift 3 Online Pro上运行的修改后的Docker文件是:

FROM centos:6
MAINTAINER Simon 1905 <simbo@x.com>
RUN yum -y install httpd && yum clean all
RUN sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf && \
  chown apache:0 /etc/httpd/conf/httpd.conf && \
  chmod g+r /etc/httpd/conf/httpd.conf && \
  chown apache:0 /var/log/httpd && \
  chmod g+rwX /var/log/httpd && \
  chown apache:0 /var/run/httpd && \
  chmod g+rwX /var/run/httpd
RUN mkdir -p /var/www/html && echo "hello world!" >> /var/www/html/index.html && \
  chown -R apache:0 /var/www/html && \
  chmod -R g+rwX /var/www/html
EXPOSE 8080
USER apache
CMD /usr/sbin/httpd -D FOREGROUND
来自centos:6
维护者西蒙1905
运行yum-y安装httpd&&yum全部清除
运行sed-i“s/Listen 80/Listen 8080/”/etc/httpd/conf/httpd.conf&&\
chown apache:0/etc/httpd/conf/httpd.conf&&\
chmod g+r/etc/httpd/conf/httpd.conf&&\
chown apache:0/var/log/httpd&&\
chmod g+rwX/var/log/httpd&&\
chown apache:0/var/run/httpd&&\
chmod g+rwX/var/run/httpd
运行mkdir-p/var/www/html&&echo“helloworld!”>/var/www/html/index.html&&\
chown-R apache:0/var/www/html&&\
chmod-rg+rwX/var/www/html
曝光8080
用户apache
CMD/usr/sbin/httpd-D前台

我刚刚尝试将第一行从centos:7更改为
,它再次在本地CDK上工作,但失败了,但日志选项卡实际显示了一些有用的信息:我刚刚尝试将第一行从centos:7更改为
,它再次在本地CDK上工作,但失败了,但日志选项卡实际显示了一些有用的信息:谢谢。有点离题,但我在一家大型商店工作,那里的团队希望使用供应商支持的构建器图像,而不是s2i。因此,虽然我知道,对于某些人来说,简单的方法并不是真正得到拥有自己的供应商或社区支持图像的人的认可。啊哈,据我所知,如果您使用带有红帽订阅的OpenShift容器平台,那么httpd的S2I图像将成为支持图像集的一部分。如果这一级别的支持还不够,我不希望你在其他地方得到的图像会更好。很好,Docker Hub上的所有东西都没有支持,对于那些可能的支持,您仍然需要为支持付费。apache只是我认为演示该问题最简单的方法。我们使用的实际技术因机构和服务而异。微软的SDK Docker映像就是一个例子,其中最新的供应商支持映像领先于s2i映像,因此我们的C#团队可能会选择供应商映像。一个Java微服务团队和一个类似组织的Scala团队不支持s2i。R是数据科学团队喜欢的另一种语言,如社区模板。再次感谢您的指点。对于任何第三方映像,无法作为root运行的问题将是一个持续的问题。这是因为人们在设计图像时没有考虑到围绕这个问题的最佳实践。T