簡體   English   中英

如何訪問在docker容器中運行的nginx Web服務器所服務的網頁

[英]How to access web page served by nginx web server running in docker container

我們正在嘗試使用docker來運行nginx,但由於某種原因,我無法訪問在docker容器內運行的nginx Web服務器。

我們使用以下Dockerfile啟動了Docker容器: https//github.com/dwyl/learn-docker/blob/53cca71042482ca70e03033c66d969b475c61ac2/Dockerfile

(它是使用在端口8888上運行的nginx的基本問候世界)要運行我們使用的容器:

docker run -it ubuntu bash

我們使用docker inspect命令確定了Container的IP地址:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' a9404c168b21

這是: 172.17.0.11

當我嘗試在瀏覽器http://172.17.0.11:8888/中訪問容器的IP地址和nginx端口時,我們得到ERR_CONNECTION_TIMED_OUT

或使用卷曲:

curl 172.17.0.11:8888
curl: (7) Failed to connect to 172.17.0.11 port 8888: Connection refused

為了解決這個問題,我們廣泛搜索,但懷疑我們可能會問“錯誤”的問題......

您不應該嘗試訪問容器的IP地址,您應該使用主機的IP地址。

您缺少的是主機端口到運行nginx服務器的容器端口的映射。

假設您要在主機上使用端口8888,您需要一個這樣的參數來映射端口:

docker run ... -p 8888:8888 ...

然后,您應該能夠通過http://<HOST_MACHINE_IP>:8888訪問您的服務器

編輯 :如果你在Mac上運行,還有另一個問題。 要在Mac上使用Docker,通常使用boot2dockerboot2docker會添加另一層。 您需要確定boot2docker容器的IP地址,並使用它而不是localhost來訪問nginx。

$ boot2docker ip

The VM's Host only interface IP address is: <X.X.X.X>

$ wget http://<X.X.X.X>:8888
...
Connecting to <X.X.X.X>:8888... connected.
HTTP request sent, awaiting response... 200 OK

參考: https//viget.com/extend/how-to-use-docker-on-os-x-the-missing-guide

編輯 :...或與docker-machine相同的命令是docker-machine ip <machine-name> ,其中<machine-name>可能是“默認”。

您可能需要檢查容器是否正在運行:

  • docker ps(你應該有一個活動的容器)

如果沒有活動的容器:

  1. docker run -p 80:80 -it / bin / bash
  2. 然后你會在你的圖像終端上
  3. 啟動nginx - sudo服務nginx啟動
  4. ctrl p + ctrl q退出docker而不退出容器
  5. 如果您使用的是mac並使用boot2docker,則無法使用localhost來檢查正在運行的nginx
  6. 所以使用boot2docker ip
  7. 使用boot2docker ip瀏覽

暫無
暫無

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

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