2015-06-02 53 views
1

我完全停留在以下內容上。如何使用--Express + Docker + Azure映射端口

嘗試在Azure虛擬機上的docker中設置快速應用程序。

1)虛擬機是使用泊塢窗機創建-driver蔚藍到底好不好......

2)建立圖像的所有良好的售後服務:

//Dockerfile 
FROM iojs:onbuild 

ADD package.json package.json 
ADD src src 

RUN npm install 

EXPOSE 8080 
CMD ["node", "src/server.js"] 

這裏就是我堅持:

我已經嘗試了所有以下以及許多其他的:

• docker run -P (Then adding end points in azure) 
• docker run -p 80:8080 
• docker run -p 80:2756 (2756, the port created during docker-machine create) 
• docker run -p 8080:80 

如果有人可以解釋AZU重新設置VIP與內部VS碼頭揭露。

在這一切結束

所以,每一個端口,我嘗試用Azure的打擊:

AzureVirtualIP:ALL_THE_PORT 

我總是得到一個ERR_CONNECTION_REFUSED

爲了確保快遞應用程序正在運行,因爲我得到控制檯日誌信息。

任何想法?

感謝

回答

3

從外面開始和調試工作的方式:

外天青

<start your container on the Azure VM, then> 

$ curl $yourhost:80 

在VM

$ docker run -p 80:8080 -d laslo 
882a5e774d7004183ab264237aa5e217972ace19ac2d8dd9e9d02a94b221f236 
$ docker ps 
CONTAINER ID IMAGE   COMMAND    CREATED  STATUS  PORTS    NAMES 
64f4d98b9c75 laslo:latest node src/server.js 5 seconds ago up 5 seconds 0.0.0.0:80->8080 something_funny 
$ curl localhost:80 

0.0.0.0:80->8080表明您的端口轉發已生效。如果您運行其他容器,沒有正確的權限或有其他網絡問題,Docker可能會爲您提供一個容器而不轉發端口。

如果這可行,但第一個測試沒有,那麼你沒有正確地打開你的虛擬機的端口。可能是因爲您需要設置Azure端點,或者您的虛擬機上運行了防火牆。

在容器

$ docker run -p 80:8080 --name=test -d laslo 
882a5e774d7004183ab264237aa5e217972ace19ac2d8dd9e9d02a94b221f236 
$ docker exec it test bash 
# curl localhost:8080 

在這最後一個,我們得到的容器本身的內部。捲曲可能沒有安裝,所以也許你必須首先apt-get install curl

如果這不起作用,那麼您的Express服務器不在端口80上偵聽,並且您需要檢查設置。

+0

謝謝納撒尼爾,我會檢查一下。發佈後不久,我放棄了Azure,轉移到了開箱即用的數字海洋。感謝您的詳細解答! –