如何在使用 docker 容器的同时解决 403:Forbidden?
How can I solve 403:Forbidden whilst using a docker container?
我是 Docker 的新手,目前正在学习本教程:
我创建了必要的文件并弥补了在 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文件夹是否有权限。
谢谢
我是 Docker 的新手,目前正在学习本教程:
我创建了必要的文件并弥补了在 localhost:80 上显示 "Hello World!"。
除此之外,我尝试使用对我的文件夹的直接引用来挂载容器,这样我就可以更新 index.php 文件来模拟开发环境,然后我遇到了这个错误:
我所做的只是更改图像的方式 运行 这样我就可以更新 index.php 文件的内容并在我按 F5 时看到更改反映在网页中。
目前在 Windows 10 Pro
上为 Windows 使用 DockerDocker 对于 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文件夹是否有权限。 谢谢