无法在 docker 中访问服务 运行
Can't access service running in docker
我无法通过 http://localhost:8000
运行ning 在 docker 图像中访问基于 nodejs 的服务。我将 Docker 用于 Mac (https://docs.docker.com/docker-for-mac/)
我正在学习这里的教程 https://nodejs.org/en/docs/guides/nodejs-docker-webapp/。
服务器 运行s 在端口 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 虚拟机,我可以 curl http://localhost:8000
从容器内部访问服务器。
但是,我从我的系统终端尝试了相同的 curl http://localhost:8000
,但它无法访问。
不确定我接下来需要做什么。
试试下面的监听语句:
app.listen(PORT, '0.0.0.0');
从阅读你提到的教程来看,express 似乎正在监听 localhost
。如果您在本地 运行 但在容器内,这很好,localhost
与在容器外的 localhost
不同。
0.0.0.0
是 unspecified IPv4 address,因此 Express 将绑定到它可以找到的任何 IP,这将是您的请求从容器外部传入的 IP。
我无法通过 http://localhost:8000
运行ning 在 docker 图像中访问基于 nodejs 的服务。我将 Docker 用于 Mac (https://docs.docker.com/docker-for-mac/)
我正在学习这里的教程 https://nodejs.org/en/docs/guides/nodejs-docker-webapp/。
服务器 运行s 在端口 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 虚拟机,我可以 curl http://localhost:8000
从容器内部访问服务器。
但是,我从我的系统终端尝试了相同的 curl http://localhost:8000
,但它无法访问。
不确定我接下来需要做什么。
试试下面的监听语句:
app.listen(PORT, '0.0.0.0');
从阅读你提到的教程来看,express 似乎正在监听 localhost
。如果您在本地 运行 但在容器内,这很好,localhost
与在容器外的 localhost
不同。
0.0.0.0
是 unspecified IPv4 address,因此 Express 将绑定到它可以找到的任何 IP,这将是您的请求从容器外部传入的 IP。