无法连接到OS X上发布的Docker端口

时间:2017-07-03 12:13:59

标签: docker

我正在尝试在OS X上的Docker(17.06)容器中运行一个简单的Node.js / Express Web应用程序(最新更新10.12.5)。我无法在localhost:3000连接到该应用,但我无法弄清楚出了什么问题。我还尝试通过在其控制台中运行ip addr | grep global来连接到VM的IP地址,但无济于事。

我的应用程序实际上只是JetBrains Webstorm在创建“Node.js Express App”类型的新项目时创建的框架。请注意,我可以通过npm start在我的主机系统上运行此应用,并在localhost:3000成功连接到该应用。

然后我构建了一个像这样的Docker镜像:

docker build -t joonas/meancopy .

运行它:

docker run -it -v `pwd`:/home/dev/src --name meancopy joonas/meancopy -p 3000:3000

在被投入VM的shell之后,我运行npm start并获得以下内容:

[dev@c24d24f58f1d:~/src$ npm start
npm info it worked if it ends with ok
npm info using npm@5.0.3
npm info using node@v8.1.2
npm info lifecycle npmtest@0.0.0~prestart: npmtest@0.0.0
npm info lifecycle npmtest@0.0.0~start: npmtest@0.0.0

> npmtest@0.0.0 start /home/dev/src
> node ./bin/www

输出与在主机上运行期望的“npm info”行开头时的输出相同。但是,我无法通过localhost:3000连接到此服务器。

我还尝试使用--expose=3000--net="host"运行图片,因为我在网上搜索解决方案时发现了这些图片,但是他们没有帮助(根据我的理解,甚至不需要这里)。

非常感谢任何帮助或调试的想法!

1 个答案:

答案 0 :(得分:1)

你的docker run命令不好

docker run -it -v `pwd`:/home/dev/src --name meancopy joonas/meancopy -p 3000:3000

您编写此文档的方式,容器将尝试执行-p 3000:3000作为容器的流程实例。您需要在之前放置-p参数图像名称。

docker run -it -v `pwd`:/home/dev/src --name meancopy -p 3000:3000 joonas/meancopy

现在,docker将运行Dockerfile中定义的命令 - 可能是node.js应用程序,正如预期的那样。