什么是“docker inspect”中的“网关”?

时间:2018-04-19 16:18:16

标签: docker docker-compose

我在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容器时发生的事情。

我发现每个网络都有一个“网关”。 我在主机上找不到这样的接口。 “网关”在哪里?为什么我们需要这样的东西?

任何简单的图表都会有所帮助...... 感谢。

1 个答案:

答案 0 :(得分:1)

网关是将网络连接到外部世界的设备。当数据包被发送到不在同一网络中的目的地时,数据包将被发送到网关,网关知道如何将其发送到下一个路由器,依此类推,直到数据包在目的地接收为止。

在这种情况下,此网关设备是虚拟的,它是容器和主机物理接口之间桥接的一部分。需要进行此仿真,以允许在容器中运行的软件像在主机上一样运行。它还将容器网络与主机网络分开(分离是您使用docker的动机)。