无法访问在docker

时间:2017-05-19 03:32:22

标签: docker localhost docker-for-mac

我无法通过在docker镜像中运行的http://localhost:8000访问基于nodejs的服务。我正在使用Docker for Mac(https://docs.docker.com/docker-for-mac/

我按照这里的教程https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

服务器在端口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 vm,我可以curl http://localhost:8000并从容器内部访问服务器。

但是,我从我的系统终端尝试相同的curl http://localhost:8000并且无法访问它。

不确定接下来我需要做什么。

1 个答案:

答案 0 :(得分:5)

尝试以下listen语句:

app.listen(PORT, '0.0.0.0');

从阅读教程中你提到它看起来像是正在聆听localhost。如果您在本地运行但在容器内,localhost与容器外的localhost不同,则此功能正常。

0.0.0.0unspecified IPv4 address,因此Express将绑定在它可以找到的任何IP上,这将是您的请求从容器外部进入的IP。