无法连接到OS X上发布的Docker端口
我试图在OS X(最新更新10.12.5)的Docker(17.06)容器中运行一个简单的Node.js / Expressnetworking应用程序。 我无法连接到localhost:3000
的应用程序,我无法弄清楚什么是错的。 我也尝试通过运行ip addr | grep global
连接到虚拟机的IP地址 ip addr | grep global
在其控制台ip addr | grep global
无济于事。
我的应用程序实际上只是JetBrains Webstorm在创buildtypes为“Node.js Express App”的新项目时创build的框架。 请注意,我可以通过npm start
在主机系统上运行这个应用程序,并成功地连接到localhost:3000
。
然后我创build了一个Docker镜像,如下所示:
docker build -t joonas/meancopy .
运行:
docker run -it -v `pwd`:/home/dev/src --name meancopy joonas/meancopy -p 3000:3000
在被npm start
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"
运行镜像,因为我在网上search解决scheme的时候发现了这些,但是他们没有帮助(而且我的理解甚至不需要在这里)。
任何帮助或debugging的想法,非常感谢!
您的docker run
命令是不好的
docker run -it -v `pwd`:/home/dev/src --name meancopy joonas/meancopy -p 3000:3000
你写这个的方式,容器将尝试执行-p 3000:3000
作为容器的stream程实例。 您需要在图像的名称之前加上-p
参数。
docker run -it -v `pwd`:/home/dev/src --name meancopy -p 3000:3000 joonas/meancopy
现在docker会运行你的Dockerfile中定义的命令 – 这可能是node.js应用程序,如预期的那样。