2

我完全坚持以下几点。

尝试在 Azure VM 上的 docker 中设置快速应用程序。

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

如果有人可以用 VIP、内部和 docker 暴露来解释 azure 的设置。

因此,在这一切结束时,我尝试使用 Azure 访问的每个端口:

AzureVirtualIP:ALL_THE_PORT

我总是得到一个 ERR_CONNECTION_REFUSED

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

有任何想法吗?

谢谢

4

1 回答 1

4

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

在 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 可能会给您一个容器而不转发端口。

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

在容器中

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

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

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

于 2015-06-03T16:04:19.723 回答