你如何运行一个Openshift的Docker容器作为除root之外的东西?

我目前正在运行Openshift,但是当我尝试构build/部署自定义的Docker容器时遇到了问题。 该容器在我的本地机器上正常工作,但一旦它build立在openshift中,我尝试部署它,我收到错误消息。 我相信这个问题是因为我试图以root身份运行容器内的命令。

(13)Permission denied: AH00058: Error retrieving pid file /run/httpd/httpd.pid 

我正在部署的Docker文件看起来像这样 –

 FROM centos:7 MAINTAINER me<me@me> RUN yum update -y RUN yum install -y git https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm RUN yum install -y ansible && yum clean all -y RUN git clone https://github.com/dockerFileBootstrap.git RUN ansible-playbook "-e edit_url=andrewgarfield edit_alias=emmastone site_url=testing.com" dockerAnsible/dockerFileBootstrap.yml RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; COPY supervisord.conf /usr/etc/supervisord.conf RUN rm -rf supervisord.conf VOLUME [ "/sys/fs/cgroup" ] EXPOSE 80 443 #CMD ["/usr/bin/supervisord"] CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] 

我遇到过类似的问题多次,它会说Permission Denied on file /supervisord.log或类似的东西。

我如何设置它,使我的容器不能以root身份运行所有的命令? 这似乎是造成我所有的问题。

Openshift严格的定制Docker构build的安全策略。

看看这个OpenShift应用程序平台

特别是在常见问题部分的第4点,在这里引用。

4.为什么我的Docker镜像不能在OpenShift上运行?

安全! Origin默认使用以下安全策略运行:

容器以独立于其他系统用户的非root用户身份运行,它们不能访问主机资源,运行特权或成为root用户给定由系统pipe理员定义的CPU和内存限制他们访问的任何持久存储都将处于唯一SELinux标签,防止他人看到他们的内容这些设置是每个项目,所以默认情况下,不同项目中的容器看不到对方普通用户可以运行Docker,源代码和自定义构build默认情况下,Docker构build可以(并且经常)运行作为根。 您可以控制谁可以通过构build/ docker创buildDocker构build以及构build/定制策略资源。 普通用户和项目pipe理员不能更改他们的安全配额。

许多Docker容器希望以root身份运行(因此编辑文件系统的所有内容)。 Image作者的指南提供了关于默认情况下使图像更安全的build议:

不要以root身份运行

使您想要写入的目录可以写入组,并由组ID标识0设置可执行文件的networking绑定function,如果他们需要绑定到端口<1024

否则,您可以查看安全文档,了解如何放宽这些限制的说明。

我希望它有帮助。