【问题标题】:Docker nginx SELinux (centOS/RHEL) with 403 forbidden access带有 403 禁止访问的 Docker nginx SELinux (centOS/RHEL)
【发布时间】:2017-09-04 06:08:52
【问题描述】:

所以我的 Dockerfile 通过 docker-compose 运行:

Dockerfile

FROM nginx
#COPY conf
COPY myapp/ /usr/share/nginx/html
RUN chmod -R 664 /usr/share/nginx/html
RUN chown -R nginx /usr/share/nginx/html
RUN chcon -R -t httpd_sys_content_t /usr/share/nginx/html

这是在 RHEL 6.x 上,Docker 是旧的 1.7 或其他版本。

对于大多数环境,我什至不需要“运行 chmod/chown/chcon”! dockerfile 在 Windows 上运行良好。

但是,每当 nginx 尝试访问 /usr/share/nginx/html 中的任何文件时,我仍然会收到 403 Forbidden 错误。

在 docker 容器中设置 nginx 并避免这些 SElinux 问题的正确方法是什么? (SElinux 处于“强制执行”状态)

事实上,如果你这样做了

运行/CMD ls -l

我们可以看到 nginx 是拥有该文件夹的用户,它具有正确的权限!那么到底发生了什么?

【问题讨论】:

    标签: nginx docker dockerfile rhel


    【解决方案1】:

    与旧 Docker 1.7.1 和 RHEL6 相关的特殊情况,意味着您必须安装 RHEL7。 SELinux 不能很好地使用它。有一些核心 RHEL6 库问题(共享库权限错误)使其几乎无法与 Docker 1.7.1 一起使用。

    标签都错了。图像中的进程是不正确的 init_rc_t 类型标签。可以将文件更改为 httpd_sys_content_t 但它不起作用。

    我认为也可能存在一些 nginx:nginx (UID GID mismatching) 问题。

    但实际上,这是放弃时间。不值得花时间解决它,而且我的主机提供商不会打电话给 RHEL6 来询问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 2019-06-07
      • 2019-04-17
      • 2015-10-29
      相关资源
      最近更新 更多