我在docker中运行nginx(Docker for mac,使用docker-compose),这里是docker inspect
的“网络”部分。
{
"Networks": {
"laradock_backend": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"c189cabxfdf9",
"nginx"
],
"NetworkID": "f4f8d8ff07ae90d5758644968d96f2g653fc5188c895f19c2d08de92c46cc075",
"EndpointID": "f8c6d5a8b061c75c44c2e078a65928a9b45dd91833fc05x7f249c64a180e84a1",
"Gateway": "172.21.0.1",
"IPAddress": "172.21.0.4",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:02:fc:15:10:05",
"DriverOpts": null
},
"laradock_frontend": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"c189cab4ddg1",
"nginx"
],
"NetworkID": "7b410b1bd764617a3f6146862307f886681e57aaxf057e4308f1236e1558ffcb",
"EndpointID": "0caa62bc5bbx600a5b1f260ebg11014e05394671ca347f818bfx819f43f7011e",
"Gateway": "172.22.0.1",
"IPAddress": "172.22.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "01:41:af:16:00:03",
"DriverOpts": null
}
}
}
我不是计算机网络方面的专家。但是我经常使用docker,我只想更好地了解每当我通过主机(localhost)连接到docker容器时发生的事情。
我发现每个网络都有一个“网关”。 我在主机上找不到这样的接口。 “网关”在哪里?为什么我们需要这样的东西?
任何简单的图表都会有所帮助...... 感谢。
答案 0 :(得分:1)
网关是将网络连接到外部世界的设备。当数据包被发送到不在同一网络中的目的地时,数据包将被发送到网关,网关知道如何将其发送到下一个路由器,依此类推,直到数据包在目的地接收为止。
在这种情况下,此网关设备是虚拟的,它是容器和主机物理接口之间桥接的一部分。需要进行此仿真,以允许在容器中运行的软件像在主机上一样运行。它还将容器网络与主机网络分开(分离是您使用docker的动机)。