2017-07-24 49 views
0

運行我有一個簡單Centos6碼頭工人像一個簡單的Centos的圖像:OpenShift3 Pro不運行的本地上minishift

FROM centos:6 
MAINTAINER Simon 1905 <[email protected]> 
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 

我可以在本地運行這個和它推送到hub.docker.com。如果我然後進入本地運行的Redhat OpenShift容器開發人員工具包(CDK)的Web控制檯,並從dockerhub部署圖像,它工作正常。如果我進入OpenShift3 Pro網絡控制檯,該吊艙會進入崩潰循環。控制檯或命令行上沒有日誌來診斷問題。任何幫助非常感謝。

要想看看它是否只是Centos7的問題,我將第一行更改爲centos:7,它再一次適用於minishift CDK,但不適用於OpenShift3 Pro。它確實表明莢的日誌選項卡上的東西:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.128.2.55. Set the 'ServerName' directive globally to suppress this message 
(13)Permission denied: AH00058: Error retrieving pid file /run/httpd/httpd.pid 
AH00059: Remove it before continuing if it is corrupted. 
+0

我只是想改變的第一行是'從CentOS的:7',並再次它在本地CDK上工作但失敗,但日誌選項卡實際上說有用: – simbo1905

回答

2

這是失敗,因爲你的形象希望爲特定用戶運行。

在Minishift中這是允許的,因爲它能夠以root身份運行圖像。

在OpenShift Online上,您的圖像將作爲任意分配的UID運行,並且永遠不能作爲選定的UID運行,也不能以超級用戶身份運行。

如果你只有在託管靜態文件的方式,請參閱:

這是一個S2I建設者採取靜態文件Apache和在一個容器中運行起來。

您可以通過運行使用它作爲一個S2I建設者:

oc new-app centos/httpd-24-centos7~<repository-url> --name httpd 
oc expose svc/httpd 

或者,如果你想嘗試和定製它,你可以創建一個派生圖像。

無論哪種方式,看看它是如何實現,如果要建立自己的。

+0

謝謝。有點偏離主題,但我在一家大型商店工作,團隊希望使用供應商支持的構建器映像而不是s2i。所以,雖然我認爲這是一個簡單的道路,但它並不真正從擁有自己的供應商或社區支持的圖像的人那裏購買。 – simbo1905

+1

Aha https://docs.openshift.com/container-platform/3.5/creating_images/guidelines.html#openshift-container-platform-specific-guidelines – simbo1905

+0

據我所知,httpd的S2I映像將成爲支持的一部分圖像集,如果您使用OpenShift容器平臺和紅帽訂閱。如果這種支持水平還不夠,我不希望你在其他地方獲得的圖像會更好。 Docker Hub上的所有東西都沒有支持,對於那些可能還需要支付某人的支持。 –

0

從紅帽企業文檔在https://docs.openshift.com/container-platform/3.5/creating_images/guidelines.html#openshift-container-platform-specific-guidelines

默認情況下,OpenShift集裝箱平臺上運行使用 任意分配的用戶ID的容器。這提供了額外的安全性 針對由於容器引擎 漏洞而逃離容器的進程,從而實現主機 節點上升級的權限。對於支持以任意用戶身份運行的映像,目錄 和映像中的進程可能寫入的文件應爲根組擁有的 ,並且可由該組讀取/寫入。要執行的文件 也應具有組執行權限。

RUN chgrp -R 0 /some/directory \ 
    && chmod -R g+rwX /some/directory 

因此,在這種情況下,它運行在OpenShift 3在線臨修改多克爾文件是:

FROM centos:6 
MAINTAINER Simon 1905 <[email protected]> 
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 
+0

這裏的一個關鍵點是,儘管root用戶0有特權,但是可能在Linux羣組下看起來根組0沒有特權,如https://unix.stackexchange.com/questions/44077/what-does-它均值將要式基團的0 – simbo1905

相關問題