我在docker terminal中运行图像:
docker run -p 4000:80 friendlyhello
Localhost无法连接并显示图像。
无法联系到本网站 localhost拒绝连接。
- 你的意思是http://localhost4000.org/吗? - 在Google上搜索localhost 4000
ERR_CONNECTION_REFUSED
答案 0 :(得分:8)
我想也许你在Windows上的浏览器中访问http://localhost:4000,然后你应该使用docker默认机器ip(通常是192.168.99.100)。 试试http://192.168.99.100:4000。
答案 1 :(得分:0)
使用docker run
命令,您应该使用http://127.0.0.1:4000从主机访问容器,如@Black在评论中所说。无论如何,你的“友好”形象究竟是什么?因为在dockerhub上有很多“友好”的图像,但你的不是其中任何一个。没有正式的友好形象。你能把你的Dockerfile?无论如何,假设标准的“friendlyhello”将在端口80上运行带有Hello World欢迎页面的Web服务器。它应该工作。
我已经使用docker run -p 4000:80 movila/friendlyhello
进行了测试,并且正在为我工作。
如果不适合你,听起来你有某种iptables问题。重新启动计算机以恢复iptables规则(docker会自动执行此操作)并重试。
其他可能性是直接访问容器的ip而不是hosts ip。当你启动docker容器时,如果你没有指定-d
参数,它将让你的终端打印它的日志。在那个日志上有一个ip。那个ip就是容器的ip。我的日志示例:
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
172.17.0.1 - - [10/May/2017 07:13:53] "GET / HTTP/1.1" 200 -
172.17.0.1 - - [10/May/2017 07:13:53] "GET /favicon.ico HTTP/1.1" 404 -
您可以尝试使用http://172.17.0.1来访问它。
答案 2 :(得分:0)
如果您可以共享您正在使用的Docker版本和操作系统,那将是一件好事。同时,请尝试以下步骤:
docker inspect -f' {{range .NetworkSettings.Networks}} {{。IPAddress}} {{end}}' container_name_or_id
答案 3 :(得分:0)
在Windows上使用docker时,我也遇到此错误。
尽管进行了许多尝试,但仍无法通过玩端口号和映像重建或完全擦除Docker容器来解决。
花了我一段时间才解决,所以想节省您所有的时间。
1-输入命令Run docker network ls
寻找与下面类似的输出-
Network ID Name Driver Scope
cd6a217449e3 nat nat local
2-复制网络ID
3输入命令docker network inspect THENETWORKID
4-您将收到一些输出到屏幕,看起来像json输出,查找类似于以下内容的文本:-
"Containers": {
"4b953b6a597e38eac1de39119d30fb4c87bca6faae7da444b02e223685eed5c7": {
"Name": "jolly_rosalind",
"EndpointID": "5919da54af323505e18d9807742fd12bb3acbe260dcee28911ffdf56fb905baf",
"MacAddress": "00:15:5d:3c:50:58",
"IPv4Address": "172.30.49.218/16",
"IPv6Address": ""
}
5-在网络浏览器中输入“ http://THEIPV4ADDRESS:5000/”,您可能会被漂亮的“ 0”美化。
祝你好运!
答案 4 :(得分:0)
我也遇到了这个问题,请按照documentation的这一部分进行解决:
注意:如果您在Windows 7上使用Docker Toolbox,请使用Docker 机器IP,而不是本地主机。例如, http://192.168.99.100:4000/。要查找IP地址,请使用以下命令 docker-machine ip。
答案 5 :(得分:0)
如果您在docker容器中运行nodejs应用,请尝试使用“ 0.0.0.0”而不是“ localhost”。
示例:假设您的应用程序在端口3000上运行
server.listen(3000, 'localhost' () => {
console.log('listening for requests on port 3000');
});
server.listen(3000, '0.0.0.0' () => {
console.log('listening for requests on port 3000');
});
然后您可以在docker中将端口映射到您的Web应用。
docker run -p 4000:3000 --name 'your_container_name' 'your_image_name'
启动容器,并在cmd或终端上使用以下命令查看端口。
docker port <your_container_name>