我已经安装了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)
答案 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/
的更多信息