首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >码头:不能打开从集装箱到主机的港口

码头:不能打开从集装箱到主机的港口
EN

Stack Overflow用户
提问于 2016-11-27 08:53:40
回答 2查看 3.4K关注 0票数 8

我在用Docker for Mac。我有一个运行服务器的容器,例如,我的服务器在5000端口上运行。我已经在Dockerfile上公开了这个端口

当我的容器运行时,我连接到这个容器并检查该服务器是否运行在下面的命令中,并查看它是否返回数据(一堆html和javascript)。

代码语言:javascript
运行
复制
wget -d localhost:5000

注意,我启动这个容器并通过命令在外部发布端口:

代码语言:javascript
运行
复制
docker run -d -p 5000:5000 <docker_image_name>

但是在docker主机(是我的mac和运行El Capitan),我打开铬并去寻址localhost:5000。它不起作用。请注意,如果我转到任意端口(如localhost:4000 ),就会看到来自chrome的错误消息,例如:

代码语言:javascript
运行
复制
This site can’t be reached
localhost refused to connect.

但是localhost:5000的错误消息是:

代码语言:javascript
运行
复制
The localhost page isn’t working
localhost didn’t send any data.

因此,我似乎已经配置了“一点点”工作,但有些地方出了问题。请告诉我怎么解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-27 14:14:07

请检查容器中的程序是否正在监听接口0.0.0.0。

在容器中,运行命令:

代码语言:javascript
运行
复制
ss -lntp

如果看上去像:

代码语言:javascript
运行
复制
LISTEN  0   128   127.0.0.1:5000  *:*

这意味着您的web应用程序只在本地主机上监听,因此容器主机无法访问您的web应用程序。您应该通过更改web应用程序构建设置,让您的服务器在0.0.0.0界面上监听。

例如,如果您的服务器是nodejs应用程序:

代码语言:javascript
运行
复制
var app = connect().use(connect.static('public')).listen(5000, "0.0.0.0");

如果您的服务器是web包:

代码语言:javascript
运行
复制
 "scripts": {
    "dev": "webpack-dev-server --host 0.0.0.0 --port 5000 --progress"
  }
票数 7
EN

Stack Overflow用户

发布于 2017-07-06 23:28:15

我在使用Docker时遇到了这个问题,试图运行一个Angular2应用程序。

我通过将start脚本在package.json中更改为

代码语言:javascript
运行
复制
"scripts": {
    "start": "ng serve --host 0.0.0.0"
}

以前,start只是ng serve

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40827230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档