首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker -未能连接到本地主机端口4000:连接被拒绝

Docker -未能连接到本地主机端口4000:连接被拒绝
EN

Stack Overflow用户
提问于 2017-05-17 02:51:54
回答 4查看 49.3K关注 0票数 21

你好,我是新来的码头,我正在尝试熟悉码头通过在官方网站上的教程。现在,我开始学习本教程的第2部分(您可以在这里查看=> https://docs.docker.com/get-started/part2/#run-the-app的链接)。

我有示例应用程序代码、Dockerfile和requirements.txt,与官方教程完全相同

代码语言:javascript
复制
$ ls
app.py  Dockerfile  requriements.txt

我的Dockerfile看起来像这样

代码语言:javascript
复制
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个文件的文件内容/代码与本教程完全相同。我能够使用以下命令构建图像注册表

代码语言:javascript
复制
$ docker build -t friendlyhello .

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

代码语言:javascript
复制
$ 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

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

代码语言:javascript
复制
$ docker run -d -p 4000:80 friendlyhello
c1893f7eea9f1b708f639653b8eba20733d8a45d3812b442bc295b43c6c7dd5c

编辑:这是运行在上面命令之后的容器

代码语言:javascript
复制
$ 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

不幸的是,我无法从那个URL中得到任何响应。

代码语言:javascript
复制
$ curl http://localhost:4000
curl: (7) Failed to connect to localhost port 4000: Connection refused

我完全是新手,我不知道do....How该怎么做,我能让它工作吗?谢谢您的回复。

编辑:我做了@johnharris85 85建议的。下面是输出

代码语言:javascript
复制
$ 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'

好像也不起作用。

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

代码语言:javascript
复制
$ 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>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-17 03:24:24

我对docker不是很熟悉,但听起来您的设置是这样的,您的对接实例正在虚拟机中运行,您正在尝试从Windows机器访问绑定到本地主机( vm)的应用程序。您之所以拒绝在这里使用curl,是因为主机上的端口4000 (Windows)上没有任何内容可供监听。

尝试查找您的停靠实例正在使用的IP:

$ docker-machine ip default

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

$ curl http://$(docker-machine ip default):4000

票数 62
EN

Stack Overflow用户

发布于 2018-08-19 05:02:13

如果您正在Mac上运行您的码头,并试图使用本地主机连接到您的受抚养人(postgres等),则用docker.for.mac.localhost替换本地主机。

票数 12
EN

Stack Overflow用户

发布于 2018-01-16 10:54:50

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

转到xampp控制面板,并查看图像下面的端口号。我已经标记了那个红色。在我的例子中,端口号是80。

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

https://stackoverflow.com/questions/44014698

复制
相关文章

相似问题

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