最近在學習 Docker 的使用,在按照官方學習的過程中遇到一個問題,那就是在 Docker 中啟動的 Nginx 無法像官方文檔顯示的那樣 通過localhost:port 進行訪問。
例如 使用命令
docker run -d -p 8081:80 --name webserver nginx
按照官方文檔,在瀏覽器中輸入 http://localhost:8081 無法進行訪問。
在查過資料后,得知我們在 Windows 上運行 Docker 時是相當於建一個一個 Linux 環境然后后在 Linux 環境下運行 Docker 。所以,訪問服務中使用的 localhost 指的是這個Linux環境的地址,而不是我們的Windows。
使用以下命令進入啟動的容器對應的虛擬環境中
docker exec -it containerid bash
使用
curl http://localhost:80
這時可以看到 nginx 的默認返回頁面
我們只要找到對應的虛擬 Linux 對應的 ip 地址,即可正確訪問到該頁面。而網上大部分都是使用 Docker toolbox ,直接使用以下命令進行查看。
docker-machine ip default
在 控制面板——網絡和共享中心——更改適配器設置
找到 Hyper-V Virtual Ethernet Adapter 這個網卡,右鍵屬性——IPv4 即可查找到。
然后在瀏覽器使用這個ip 進行訪問,即可訪問成功。
PS:我在清理了所有容器並重新運行一個容器的時候,發現直接使用 localhost 也可以了。。不知道是中間設置了那個步驟導致的,暫時先記錄一下。
參考鏈接: