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

How can I solve 403:Forbidden whilst using a docker container?

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

Learn Docker in 12 minutes

我创建了必要的文件并弥补了在 localhost:80 上显示 "Hello World!"。

除此之外,我尝试使用对我的文件夹的直接引用来挂载容器,这样我就可以更新 index.php 文件来模拟开发环境,然后我遇到了这个错误:

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

目前在 Windows 10 Pro

上为 Windows 使用 Docker

Docker 对于 Windows 是 运行ning

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

为了回答 Mornor 的问题,这里是 docker ps

的结果

这里是 docker logs [container-name]

并且由于我现在更好地理解了引擎盖下发生的事情,我该如何解决日志中说明的问题?

这是我的Dockfile

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

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

所以你看到文件存在:

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

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

我认为你错误地表达了你的 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 不存在,那么您必须检查 Docker 文件。您挂载 src/,检查 /src 是否与您的 Docker 文件位于同一目录中。

让我们了解最新动态:)

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

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

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

检查html文件夹是否有权限。 谢谢