Docker:无法打开从容器到主机的端口

2024-03-03

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

当我的容器运行时,我连接到该容器并通过运行下面的命令来检查该服务器是否正在工作,并查看它是否返回数据(一堆 html 和 javascript)

wget -d localhost:5000

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

docker run -d -p 5000:5000 <docker_image_name>

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

This site can’t be reached
localhost refused to connect.

但错误消息为localhost:5000 is:

The localhost page isn’t working
localhost didn’t send any data.

所以看来我已经配置了“一点”工作,但有些问题。请告诉我如何解决这个问题。


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

在容器中,运行命令:

ss -lntp

如果它看起来像:

LISTEN  0   128   127.0.0.1:5000  *:*

这意味着您的 Web 应用程序仅在本地主机上侦听,因此容器主机无法访问您的 Web 应用程序。你应该让你的服务器监听0.0.0.0通过更改您的网络应用程序构建设置来实现界面。

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

var app = connect().use(connect.static('public')).listen(5000, "0.0.0.0");

如果您的服务器是 web pack:

 "scripts": {
    "dev": "webpack-dev-server --host 0.0.0.0 --port 5000 --progress"
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker:无法打开从容器到主机的端口 的相关文章

随机推荐

  • 向每个处理程序添加响应标头,而不重复同一行

    我正在编写一个小型网站 对于每个页面 我都将服务器名称添加到其标题中 func httpSignUp rw http ResponseWriter req http Request rw Header Set Server SERVER N
  • 如何使用自定义形状的 fab 按钮制作 Bottombar?

    我想制作一个带有附加 fab 按钮的底栏 如下图所示 如果有人知道那种带有 fab 底部的不同形状按钮库 请向我推荐 下面给出的图像用这样的 fab 制作了一个底栏 这只是一个可以改进代码的想法 您可以更改形状FloatingActionB
  • 如何有条件地从 .NET 集合中删除项目

    我正在尝试在 NET 中编写一个扩展方法 它将对通用集合进行操作 并从集合中删除与给定条件匹配的所有项目 这是我的第一次尝试 public static void RemoveWhere
  • 如何用 C 语言为 PIC24 编写与硬件无关的函数

    我正在编写一些实现各种功能的代码 例如 PID 控制器 信号发生器等 我的硬件提供各种输入和输出 刚才我有大量 SWITCH 语句来确定计算的源和目的地 例如 对于 PID 控制器 每 100ms 有一个开关命令 决定将哪个输入传递给 pi
  • 如何通过 PHP 发布到 Google Plus? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否已经有一个浮动的非官方 PHP 库或类 我可以使用它来发布到用户的 Google Plus
  • 如果不存在则删除表空间

    我已经编写了 pl sql 脚本 可以工作 但看起来不太好 DECLARE v exists NUMBER BEGIN SELECT count INTO v exists FROM dba tablespaces WHERE tables
  • 将结果集从 SQL 数组转换为字符串数组

    我正在查询information schema columns我的 PostgreSQL 数据库中的表 使用表名 结果集查找所有列名 类型以及是否可为空 主键 id 除外 这是正在使用的查询 SELECT column name is nu
  • C# Lambda 表达式:为什么应该使用它们?

    我很快读完了微软 Lambda 表达式 http msdn microsoft com en us library bb397687 aspx文档 不过 这种例子帮助我更好地理解 delegate int del int i del myD
  • Isabelle 返回数字而不是 Suc(Suc( ... 0 ))

    当我使用value为了找出返回自然数的函数的某个值 我总是以 0 的迭代后继函数的形式获得答案 即Suc Suc 0 有时可能很难阅读 有没有办法直接输出Isabelle返回的数字 这是我不久前想修复的问题 但显然我忘记了 卡西吉奈特的猜测
  • 如何从 C# 获取进程窗口类名?

    如何获取某个进程的窗口类名 我想在c 中实现这一点 我已经尝试过 c 中的进程类 但我只能获取进程的窗口名称 Thanks 我假设你的意思是你想获得的类名主窗口一个过程的 为此 您需要使用以下命令获取主窗口的句柄MainWindowHand
  • C中的函数调用[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 gcc 允许将参数传递给定义为不带参数的函数 https stackoverflow com questions 12643202 why does gcc allow arguments t
  • SLURM:如何在同一计算节点或不同节点上并行运行不同的可执行文件?

    Goal 了解如何通过 sbatch 作业提交来运行 共同调度或执行可执行文件 应用程序 使用 srun 或 mpirun 研究 代码片段 bin bash SBATCH job name LEBT SBATCH partition ang
  • Office 脚本(Excel 网页版)获取错误

    我正在尝试从 Web 上的 Excel 调用外部 API 但是 我一直试图从 fetch 调用中获取结果 我什至使用 Office 文档示例来确保 在 Excel 中 单击自动化以创建新脚本 async function main work
  • 按具有不同Where条件的两个字段对数据表进行分组和求和

    我有一个包含示例数据的数据表 如下所示 UserName IsBillable Hours user1 Yes 10 user2 Yes 15 user3 No 20 user1 Yes 25 user1 No 15 user2 Yes 1
  • 如何在不改变纵横比的情况下适应QGraphicsView/QGraphicsScene中的像素图查看

    我正在使用 QGraphicsView QGraphicsScene 来显示图像 图像始终以其原始大小显示 并在末端带有滚动条 我希望 QGraphicsView 根据窗口的大小自动适应图像 保持纵横比 我尝试了这个 但什么也没发生 ui
  • PHP 表单令牌的使用和处理

    我是一个用 PHP 编写登录脚本的初学者 这是我到目前为止所拥有的表单令牌声明 SESSION form token md5 rand time true 该语句是在用户表示他 她想要登录后立即发出的 我有限的理解是 令牌的目的是在唯一的时
  • 取消的 AsyncTask 挂起新的 HttpRequest

    我遇到了 asynctasks 和 http 请求的问题 用户可以按下两个不同的按钮 这两个按钮都从网络服务器下载信息 我希望这些请求可以取消 每次调用之前都会显示一个进度对话框 http请求是在异步任务中执行的 并且我在进度对话框上有一个
  • 在 PHP 中到处使用准备好的语句? (原产地保护)

    我将把在多个站点 项目中使用的数据库类从使用自定义 mysql query 方法 切换到使用 PDO 和准备好的语句 不过我首先有一个问题 我想使用准备好的语句吗到处 即使在查询只运行一次的地方 我需要做类似以下事情的情况该怎么办 INSE
  • Lucene 的 Ruby 替代品

    我经常听说 Lucene 它是 Java 中最好的搜索引擎库之一 Ruby 有类似 同样强大 的库吗 嗯 有Ferret http ferret davebalmain com trac 这是 Lucene 到 Ruby 的端口 此外 Lu
  • Docker:无法打开从容器到主机的端口

    我在用着Docker for Mac 我有一个运行服务器的容器 例如我的服务器在端口 5000 上运行 我已将此端口公开Dockerfile 当我的容器运行时 我连接到该容器并通过运行下面的命令来检查该服务器是否正在工作 并查看它是否返回数