使用 docker 容器时如何解决 403:Forbidden?

问题描述 投票:0回答:5

我是 Docker 新手,目前正在学习本教程:

12分钟学会Docker

我创建了必要的文件,并使其显示“Hello World!”在本地主机上:80。

除此之外,我尝试使用对我的文件夹的直接引用来安装容器,以便我可以更新index.php文件以模拟开发环境,然后出现此错误:

Forbidden

我所做的只是更改图像的运行方式,以便我可以更新 index.php 文件的内容,并在按 F5 时查看网页中反映的更改。

当前在 Windows 10 Pro 上使用 Docker for Windows

Windows 版 Docker 正在运行

我严格遵循每一个步骤,这样我就不会被愚弄,而且它似乎对我不起作用。

为了回答 Mornor 的问题,这是

docker ps

的结果

docker ps

这里是

docker logs [container-name]

docker logs ae

既然我现在更好地了解了幕后发生的事情,我该如何解决日志中所示的问题?

这是我的

Dockfile

Dockerfile

以及我执行的运行图像的命令:

docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/ hello-world

因此您会看到该文件存在:

path to index.php

docker portforwarding docker-for-windows
5个回答
2
投票

错误来自 Apache,它试图向您显示目录内容,因为没有可用的索引文件。您的 docker 映射无法正常工作,或者您的 apache 上没有安装 php 支持。您正在访问 http://localhost,请尝试 http://localhost/index.php

如果您遇到相同的错误,则问题出在映射上。如果您获得 php 代码,则问题出在 Apache 中缺少 PHP 支持。


2
投票

我知道答案已经晚了,但答案很简单: 当使用 docker 并且您有 SELinux 时,会发生这种情况,请注意主机不了解容器 SELinux 策略。 添加 z

docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/:z hello-world

这将自动执行您需要执行的

chcon ....


1
投票

我认为你错误地表达了你的

index.php
。要调试它,您可以做的是首先检查
index.php
是否确实安装在容器内。
您可以发出以下命令:

docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/ hello-world bash -c 'ls -lsh /var/www/html/'

(如果不起作用,请使用

sh
代替
bash
)。如果你确实能看到一个
index.php
,那么恭喜你的文件已正确挂载,并且错误不是来自 Docker,而是来自 Apache。

如果

index.php
不存在,那么你必须检查你的 Dockerfile。您挂载
src/
,检查
/src
是否与您的 Dockerfile 位于同一目录中。

让我们了解最新情况:)


0
投票

检查html文件夹是否有适当的权限。 谢谢你


0
投票

Dockerfile 档案包含主机页面的项目,包含 Dockerfile 档案和索引目录,以及索引中的索引.html

© www.soinside.com 2019 - 2024. All rights reserved.