为什么docker显示localhost数据?

时间:2016-03-06 17:42:14

标签: docker

我已经安装了Docker和Apache 2.

docker的网络地址是172.17.0.1,当我在浏览器的URL中点击它时,为什么它显示127.0.0.1(localhost)的数据。

Docker有自己的网络,应该显示其网络的数据。

aman@aman-pc ~ $ ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:f1:d4:a4:20  
          inet addr:**172.17.0.1**  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:f1ff:fed4:a420/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:17823 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24448 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1040754 (1.0 MB)  TX bytes:36481470 (36.4 MB)

eth0      Link encap:Ethernet  HWaddr 68:f7:28:39:e7:69  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:**127.0.0.1**  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:21029 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21029 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2776697 (2.7 MB)  TX bytes:2776697 (2.7 MB)

1 个答案:

答案 0 :(得分:0)

  

找到解决方案

让我们从 ip地址开始,它提供主机的地址,当你点击它发送请求给主机的url时。现在,当请求到达主机时,主机会分析请求并检查其端口。所以每当你点击一个url而没有指定它的端口时,它就会发送带端口80的请求(默认为http)。现在主机安装了服务器(apache2),主机配置为端口80 附带的任何请求,将由apache2处理。

现在针对上述问题,您的系统安装了apache2,docker,localhost等。因此,当您点击url(172.17.0.1)时,它会将请求发送给主机(此时您的系统就是主机)。现在当你的系统收到请求时,它会检查它的端口,即80.现在它将检查端口80(apache2)上运行的是哪个应用程序并向apache2发送请求。之后,apache2处理请求并发送其localhost数据,因为它配置为localhost(127.0.0.1)。

因此,如果您希望通过docker的apache2处理请求,那么您应该将端口80映射到另一个新端口并点击URL [172.17.0.1:(new port no.)]。它将重定向到docker的apache2。

  

有关映射https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

的更多信息