无法在docker中连接localhost

时间:2017-05-10 06:26:38

标签: docker

我在docker terminal中运行图像:

docker run -p 4000:80 friendlyhello

Localhost无法连接并显示图像。

  

无法联系到本网站   localhost拒绝连接。
    - 你的意思是http://localhost4000.org/吗?     - 在Google上搜索localhost 4000
  ERR_CONNECTION_REFUSED

This site can’t be reached

6 个答案:

答案 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版本和操作系统,那将是一件好事。同时,请尝试以下步骤:

  1. 检查您的容器是否实际在端口80上运行
  2. 不要使用http://localhost:4000,请尝试http:// {CONTAINER_IP}:4000 /您应该通过
  3. 获取容器IP
      

    docker inspect -f' {{range .NetworkSettings.Networks}} {{。IPAddress}} {{end}}' container_name_or_id

    1. 也许您的应用是基于HTTPS的。试试那个

答案 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>