如何映射端口- Express + Docker + Azure



我完全卡在下面了

尝试在Azure虚拟机上安装docker中的express应用。

1)使用docker-machine create -driver azure后,VM都是好的

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

如果有人能解释一下azure的设置VIP vs internal vs docker expose

最后,我尝试用Azure的:

AzureVirtualIP:ALL_THE_PORT

我总是返回ERR_CONNECTION_REFUSED

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

任何想法?

谢谢

从外部开始,向内调试:

Azure外

<start your container on the Azure VM, then>
$ curl $yourhost:80

虚拟机中

$ 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可能会给你一个没有转发端口的容器。

如果这有效,但第一次测试没有,那么您没有正确打开到VM的端口。可能是您需要设置Azure端点,或者您在VM上运行了防火墙。

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

在最后一个例子中,我们进入了容器内部。Curl可能没有安装,所以你可能必须先安装apt-get install curl

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

最新更新