我有 nginx 在 docker 中运行(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 容器时发生的事情。
我发现每个网络都有一个“网关”。
我在我的主机上找不到这样的接口(interface)。 “网关”在哪里?为什么我们需要这样的东西?
任何简单的图表都会有所帮助……
谢谢。
最佳答案
网关是将网络连接到外界的设备。当一个数据包被发送到不在同一个网络中的目的地时,该数据包被发送到网关,网关知道如何将它发送到下一个路由器,依此类推,直到数据包在目的地接收。
在这种情况下,这个网关设备是虚拟的,它是容器和主机物理接口(interface)之间的桥梁的一部分。为了允许在容器中运行的软件像在主机上一样运行,需要这种仿真。它还将容器的网络与主机的网络分离(分离是您使用 docker 的动机)。
关于docker - 在 "gateway"中找到的 `docker inspect` 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925792/