單挑:我是通用Web管理和Docker的新手。我的錯誤可能是是由非常愚蠢的東西造成的。無法從Windows Server 2016主機到達Docker上的Apache
我正在運行Docker for Windows Server 2016(本機變種)。我已經用Nano Server和Apache 2.4(nanoserver/apache24)構建了一個簡單的Docker基礎鏡像。我從這個映像中創建了一個容器,並將容器端口80映射到本地端口8082.
從容器內部,我可以使用Invoke-WebRequest -uri http://localhost:80
並檢索默認的apache文檔。但是,我也希望Invoke-WebRequest -uri http://localhost:8082
從以外的容器檢索相同的文件。這不起作用。我也嘗試使用容器NAT地址,運行Invoke-WebRequest -uri http://172.23.58.7:8082
。這也不起作用。我在這裏配置錯了什麼?
從我下面的流程截圖。 PowerShell在主機左側,PowerShell在右側的容器內。
編輯:@Grimmy問我在註釋部分,我是否確實有EXPOSE 80
我Dockerfile是否docker ps
命令顯示我與預期端口映射容器。兩方面都是肯定的。我的容器以參數-d -it
運行,因爲這是對容器在啓動後立即退出的問題的快速Google修復。我知道-i
「保持STDIN開放」和-t
「分配僞tty」,但我坦率地不明白這些暗示或它是否可能與問題有關。
EDIT2:我沒有明確在原崗位提到這一點,但值得一提的是,netstat -a -o
不不顯示一個PID監聽端口8082我希望這是事實。應該是這樣嗎?
輸出的前50行左右會顯示在屏幕截圖中。
您是否嘗試過運行'docker ps'並確保容器正在運行?如果是,用'docker exec -it container_id some_command'連接到shell。 – Serey
是的。我的屏幕截圖右側的窗口來自容器內的powershell.exe。從那裏,我可以檢索沒有問題的Apache網頁。 – Magnus
你的'Dockerfile'裏面還有'EXPOSE 80'嗎? – Grimmy