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,但解决方案相同。