Can';t访问服务在docker中运行
我无法通过Can';t访问服务在docker中运行,docker,localhost,docker-for-mac,Docker,Localhost,Docker For Mac,我无法通过http://localhost:8000在docker映像中运行。我正在使用Docker for Mac() 我在这里学习教程 服务器在端口8000上运行。我使用以下命令启动docker映像: $ docker run -p 8000:8000 -d geuis/node-server:latest 如果我运行docker ps我会看到: CONTAINER ID IMAGE COMMAND CREAT
http://localhost:8000
在docker映像中运行。我正在使用Docker for Mac()
我在这里学习教程
服务器在端口8000上运行。我使用以下命令启动docker映像:
$ docker run -p 8000:8000 -d geuis/node-server:latest
如果我运行docker ps
我会看到:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9fa2e446918b geuis/node-server:latest "npm start" 6 seconds ago Up 5 seconds 0.0.0.0:8000->8000/tcp unruffled_lewin
如果我docker exec-it 9fa2e446918b/bin/bash
我可以访问docker虚拟机,我可以curlhttp://localhost:8000
并从容器内部访问服务器
但是,我尝试了相同的curlhttp://localhost:8000
来自我的系统终端,无法访问
不确定下一步需要做什么。请尝试以下listen语句:
app.listen(PORT, '0.0.0.0');
通过阅读您提到的教程,express似乎正在收听localhost
。如果您在本地运行,但在容器内部,localhost
与容器外部的localhost
不同,则这是可以接受的
0.0.0.0
是最新版本,因此Express将绑定到它能找到的任何IP上,这将是您的请求从容器外部传入的IP。我在docker for mac上试用过它,效果很好。除了端口,您还有其他修改吗?您可以使用默认的Docker IP访问服务吗?(或任何其他IP,如果您指定的不是默认IP)是的,就是这样。使用hapijs代替Express,但解决方案相同。