簡體   English   中英

如何在使用 docker 容器時解決 403:Forbidden?

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

我是 Docker 的新手,目前正在關注本教程:

12 分鍾了解 Docker

我創建了必要的文件,並使其顯示“Hello World!” 在本地主機上:80。

除此之外,我嘗試使用對我的文件夾的直接引用來掛載容器,以便我可以更新 index.php 文件以模擬開發環境,然后出現此錯誤:

禁止的

我所做的只是改變圖像的運行方式,這樣我就可以更新 index.php 文件的內容,並在按 F5 時查看網頁中反映的更改。

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

Docker for Windows 正在運行

我一絲不苟地遵循每一步,這樣我就不會被愚弄,而且它似乎對我不起作用。

為了回答 Mornor 的問題,這里是 docker docker ps的結果

碼頭工人

這里是docker logs [container-name]

碼頭工人日志ae

既然我現在更好地了解幕后發生的事情,我該如何解決日志中說明的問題?

這是我的Dockfile

文件

我為運行我的圖像而執行的命令:

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

所以你看到文件存在:

index.php 的路徑

錯誤來自 Apache,它試圖向您顯示目錄內容,因為沒有可用的索引文件。 要么您的 docker 映射工作不正常,要么您的 apache 上沒有安裝 php 支持。 您正在訪問http://localhost ,請嘗試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不存在,那么您必須檢查您的 Dockerfile。 您掛載src/ ,檢查/src是否與您的 Dockerfile 位於同一目錄中。

讓我們保持更新:)

我知道答案很晚,但答案很簡單:當使用 docker 並且您擁有 SELinux 時,會發生這種情況,請注意主機不了解容器 SELinux 策略。 通過添加 z

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

這將自動執行您需要執行的chcon ....

檢查html文件夾是否具有適當的權限。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM