我完全卡在下面了
尝试在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上侦听,您需要检查设置