如何使用 – Express + Docker + Azure来映射端口

我完全被困在以下。

尝试在Azure虚拟机上的Docker中设置快速应用程序。

1)使用docker-machine create -driver azure之后VM是好的…

2)build立完整的图像后:

//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 

如果有人可以解释azure的VIP设置与内部VSdocker揭露。

所有这一切的最后,我试图用Azure的每一个端口:

 AzureVirtualIP:ALL_THE_PORT 

我总是得到一个ERR_CONNECTION_REFUSED

肯定快递应用程序正在运行,因为我得到控制台日志信息。

有任何想法吗?

谢谢

从外部开始,按照自己的方式进行debugging:

在Azure之外

 <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显示你的端口转发是有效的。 如果您运行其他容器,没有正确的权限或有其他networking问题,Docker可能会给你一个容器,而不转发端口。

如果这样做,但第一个testing没有,那么你没有正确地打开你的虚拟机的端口。 可能是因为需要设置Azure端点,或者在虚拟机上运行了防火墙。

在容器中

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

在最后一个,我们进入容器本身。 apt-get install curl可能没有安装,所以也许你必须先apt-get install curl

如果这不起作用,那么您的Express服务器不在端口80上侦听,您需要检查设置。