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

时间:2018-05-24 15:26:41

标签: docker portforwarding docker-for-windows

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

  

Learn Docker in 12 minutes

我创建了必要的文件,然后我编写了“Hello World!”。在localhost:80。

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

Forbidden

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

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

Docker for Windows正在运行

我严格遵循每一个步骤,所以我不会让自己被愚弄,看起来它对我不起作用。

要回答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

4 个答案:

答案 0 :(得分:1)

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

如果出现相同的错误,则问题在于映射。如果你得到php代码,问题就是缺少Apache中的PHP支持。

答案 1 :(得分: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在同一目录中。

让我们更新:)

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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