当前位置: 首页 > 知识库问答 >
问题:

Docker-无法连接到本地主机端口4000:连接被拒绝

岳浩宕
2023-03-14

大家好,我是Docker的新手,我想通过在官方网站上学习教程来熟悉Docker。现在我被困在教程的第2部分(你可以在这里查看链接)=

我有示例应用程序代码、Dockerfile和要求。txt与官方教程完全相同

$ ls
app.py  Dockerfile  requriements.txt

我的Dockerfile是这样的

FROM python:2.7-slim
WORKDIR /app
ADD . /app
RUN pip install -r requriements.txt
EXPOSE 80
ENV NAME World
CMD ["python", "app.py"]

所有3个文件的文件内容/代码也与教程完全相同。我能够用这个命令构建镜像注册表

$ docker build -t friendlyhello .

一切看起来都很好。现在我有了样本项目图像注册表。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED
friendlyhello       latest              82b8a0b52e91        39 minutes ago
python              2.7-slim            1c7128a655f6        5 days ago
hello-world         latest              48b5124b2768        4 months ago

然后,我根据官方教程使用此命令运行应用程序

$ docker run -d -p 4000:80 friendlyhello
c1893f7eea9f1b708f639653b8eba20733d8a45d3812b442bc295b43c6c7dd5c

编辑:这是我运行以上命令后的容器

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
c1893f7eea9f        friendlyhello       "python app.py"     15 minutes ago      Up 16 minutes

官方教程指导读者阅读http://localhost:4000因为他们已经将机器端口4000映射到集装箱端口80

不幸的是,我无法从该网址得到任何回应。

$ curl http://localhost:4000
curl: (7) Failed to connect to localhost port 4000: Connection refused

我完全是新手,不知道该怎么办。。。。我怎样才能让它工作?提前感谢您的回复。

编辑:我按照@johnharis85的建议做了。下面是输出

$ curl http://$(echo docker-machine ip default):4000
curl: (6) Couldn't resolve host 'docker-machine'
curl: (6) Couldn't resolve host 'ip'
curl: (6) Couldn't resolve host 'default'

看起来也不管用。

编辑:@johnharis85更正了他的建议,@user8023051澄清了这个命令是如何产生的,以及引擎盖下发生了什么。它正在工作:)谢谢

$ curl http://$(docker-machine ip default):4000
<h3>Hello World!</h3><b>Hostname:</b> c1893f7eea9f<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>

共有3个答案

夏俊杰
2023-03-14

您正在docker配置中使用端口9089,但您的程序或服务器运行在不同的端口上。要检查xampp的端口,您可以使用以下方法或尝试搜索谷歌以检查端口号:

转到xampp控制面板,查看下图中的端口号。我已经把那个红色标上了。就我而言,端口号是80

安泰平
2023-03-14

如果你在Mac上运行docker,并试图使用localhost连接到你的从属服务器(postgres等),请用docker替换localhost。对于雨衣。本地服务器

颜修真
2023-03-14

我对docker不是很熟悉,但是听起来你的设置是这样的,你的docker实例在虚拟机中运行,你正试图从你的视窗机器访问一个绑定到localhost(vm)的应用程序。这里你会从curl得到拒绝的原因是因为主机(视窗)上的4000端口实际上没有任何监听。

尝试通过以下方式查找docker实例正在使用的IP:

$docker机器ip默认值

现在知道了IP地址,请再试一次。您甚至可以在命令中对其进行评估,如下所示:

$curl http://$(docker机器ip默认值):4000

 类似资料:
  • 问题内容: 当我尝试使用连接到Elasticsearch时, 它工作正常。 但是当我运行它时抛出一个错误说 无法连接到本地主机端口9200:连接被拒绝 如何解决这个错误? 问题答案: 默认情况下,它应该绑定到所有本地地址。因此,假设你没有使用防火墙在网络层的问题,唯一的ES设置我能想到是检查并确保其未设置或设置为或或正确的IP地址为您的网络。 更新:根据ES 2.3中的注释,您应该进行设置。

  • 当我尝试使用它工作正常。 但是当我运行它抛出一个错误,表示 连接到localhost端口9200失败:连接拒绝 如何解决此错误?

  • 我有一个依赖于Kafka服务的应用程序。 对于Kafka connect,我在运行Kafka connect的kubernetes pod的Linux VM上尝试<code>curl localhost:8083</code>时遇到错误。 给出: 重建网址至: 本地主机:8083/ 正在尝试 127.0.0.1... 连接到 127.0.0.1 端口 8083 失败:连接被拒绝 无法连接到本地主机

  • 问题内容: 需要帮忙。一直在尝试解决此问题,但找不到答案,或者我没有遇到任何问题。 我有一个带有NGINX的docker容器,充当反向代理。适用于Windows的Docker版本1.12.5(9503)。 在上面的代码中,localhost:8090是在我的主机上的IIS上托管的网站的URL。当我访问NGINX上的URL时,出现以下错误 试图访问主机上的URL (简单HTML站点,只有简单html

  • 这让我很困惑。 我有一个运行nginx-php-fpm的本地开发设置,我在其中使用.localhost作为每个项目的工作域。昨天Chrome停止了与本地域的合作。相反,它只是返回被拒绝的连接。DevTools将错误显示为net::ERR\u CONNECTION\u RESET。 访问http://127.0.0.1工作,但当然不适用于本地项目。 Safari继续与.localhost一起工作。

  • 我已经设置了Flurl在我的Xamarin PCL中运行,并且我正在调用我在MVC应用程序中运行的Web Api。 似乎 Flurl 可以毫无问题地击中我部署的 API,但由于某种原因我无法在本地测试更改。 我现在做的是: 我也尝试过一个简单的GetAsync(),但再次失败。 任何帮助都将不胜感激。 编辑: 为了了解更多信息,该项目是Ionic移动应用程序的重新开发。我已经在本地运行了ionic