gpt4 book ai didi

docker - 无法访问在 docker 中运行的服务

转载 作者:行者123 更新时间:2023-12-01 11:20:40 29 4
gpt4 key购买 nike

我无法通过 http://localhost:8000 访问基于 nodejs 的服务在 docker 镜像中运行。我正在使用 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从我的系统终端,它无法访问。

不知道接下来我需要做什么。

最佳答案

试试下面的监听语句:

app.listen(PORT, '0.0.0.0');

通过阅读您提到的教程,看起来 express 正在收听 localhost .如果您在本地运行但在容器内,这很好, localhost不一样 localhost那是在容器之外。
0.0.0.0unspecified IPv4 address所以 Express 将绑定(bind)它可以找到的任何 IP,这将是您的请求从容器外部进入的 IP。

关于docker - 无法访问在 docker 中运行的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44060969/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com