我有一个运行Centos 7映像的Docker容器。它需要做的就是运行一个简单的Apache2服务器。当容器启动时,它会立即退出:
AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
DocumentRoot '/var/www/html' is not a directory, or is not readable
我做了一些基本检查:
chown -R apache /var/www
(不要解开稻草!)当我使用bash入口点进入容器时,可以使用/sbin/httpd -D FOREGROUND
以root身份启动apache,一切都会按预期进行。
所以我认为几乎可以肯定这是权限问题。 Google搜寻发现许多网页,但出现我的错误,例如 Apache restart causes DocumentRoot must be a directory, even though it is a directory and there seem to be no privilege issues 该特定页面紧密描述了我所得到的东西,几乎每个页面中的解决方案都是配置SELinux。但是SELinux被禁用。即使在该链接中,OP也有评论
我的Linux版本不是“安全增强型Linux”,因此无论如何我还是尝试过:没有效果。
但是他们接受了配置SELinux的解决方案。
我认为我缺少了一些东西,几乎可以肯定是与SELinux有关,但是我无法弄清楚。 docker映像具有以下(明显缺乏)SELinux设置:
rpm -qa | grep selinux
libselinux-2.5-12.el7.x86_64
RUN echo "SELINUX=disabled" > /etc/sysconfig/selinux
yum install -y policycoreutils
将sestatus安装在/ usr / sbin中。运行sestatus给
SELinux status: disabled
看起来SELinux确实被禁用,但是错误看起来却像是启用了。
答案 0 :(得分:0)
这种情况下的问题是由于容器的启动方式引起的。
我使用docker-compose启动此特定容器,但是卷映射的路径不正确。
我仍然不确定为什么这会导致apache无法以这种方式启动,但是更正了路径,从而解决了该问题。