Docker – 无法连接到本地端口4000:连接被拒绝
嗨,我对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个文件都具有与教程完全相同的文件内容/代码。 我能够用这个命令build立图像registry
$ docker build -t friendlyhello .
一切看起来不错。 现在我有示例项目图像registry。
$ 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
我是完全新手,我不知道该怎么做….我怎样才能得到它的工作? 预先感谢任何回应。
编辑 :我做了@ johnharris85build议。 以下是输出
$ 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纠正了他的build议,@ 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)。
尝试find您的docker实例正在使用的IP:
$ docker-machine ip default
现在你知道IP地址了,再试一次。 你甚至可以在命令中进行评估,如下所示:
$ curl http://$(docker-machine ip default):4000