繁体   English   中英

Docker - 无法连接到localhost端口4000:连接被拒绝

[英]Docker - Failed to connect to localhost port 4000: Connection refused

嗨,我对Docker很新,我正试图通过官方网站上的教程熟悉Docker。 现在我被困在教程的第2部分(你可以在这里查看链接=> https://docs.docker.com/get-started/part2/#run-the-app

我有示例应用程序代码,Dockerfile和requirements.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

不幸的是,我无法从该URL获得任何回复。

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

我完全是新手,我不知道该怎么做......我怎么能让它起作用? 提前感谢您的回复。

编辑 :我做了@ johnharris85建议。 以下是输出

$ 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澄清了这个命令是如何产生的以及发生了什么。 它现在正在工作:)谢谢

$ 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>

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

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

$ docker-machine ip default

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

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

如果您在Mac上运行docker并尝试使用localhost连接到您的dependancies(postgres等), 请将localhost替换为docker.for.mac.localhost

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

转到xampp控制面板,查看图像下方的端口号。 我标有红色。 就我而言,端口号是80

在此输入图像描述

docker实例没有在你的本地而不是docker docker-machine ssh上运行。你可以使用docker-machine ssh命令登录,然后在docker-machine上curl "localhost:6666"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM