Docker 网络中网关(Gateway)的含义与作用解析

nflow@DEV01-RISK-APP-32-12:~/script_service_3$ docker network inspect e11e762b6629
[
    {
        "Name": "model_platform_basic",
        "Id": "e11e762b66298a035f85d88b591393b7e07add5824c57356ab4fceae8e8ef3de",
        "Created": "2025-05-13T14:28:26.05207348+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv4": true,
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "20.2.11.0/24",
                    "Gateway": "20.2.11.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "00ae0b5dd00549f14df9887f83691417c6ae3756822942009702a462a2dc8a95": {
                "Name": "model_platform-wy-test-xengine-redis1-1",
                "EndpointID": "c1a081f456689f5cf7aac821f7e842a5490fe88911493dfef7c7c90a950c1c9d",
                "MacAddress": "7a:c8:fb:99:6e:77",
                "IPv4Address": "20.2.11.3/24",
                "IPv6Address": ""
            },
            "773a95d917bcb1cb0d5c9d113efe5835dad547fb6f666172d559e27565e0c83e": {
                "Name": "model_platform-nginx-1",
                "EndpointID": "0725f686b432ea68c423e253568fd900508d1e2730982c6cf72a4a226b9a0089",
                "MacAddress": "42:67:ac:5c:30:64",
                "IPv4Address": "20.2.11.10/24",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.config-hash": "18d6d7c58a2aa19037788b4da8954f965515a747e8d7a3309e54e5f99d594d01",
            "com.docker.compose.network": "basic",
            "com.docker.compose.project": "model_platform",
            "com.docker.compose.version": "2.33.1"
        }
    }
]

Docker 网络中网关(Gateway)的含义与作用解析

一、"Gateway": "20.2.11.1" 的具体含义

在 Docker 网络配置中,Gateway字段表示该网络的默认网关地址,具体到这个案例:
  • 20.2.11.1 是一个 IPv4 地址,属于20.2.11.0/24网段(该网段的 IP 范围是 20.2.11.1~20.2.11.254)
  • 它是 Docker 为model_platform_basic网络自动分配的网关,用于管理该网络内容器的网络通信

二、网关在 Docker 网络中的核心作用

网关在容器网络中扮演着 "网络枢纽" 的角色,主要功能如下:
1. 容器间通信的路由中枢
  • 当同一网络内的容器(如model_platform-wy-test-xengine-redis1-1model_platform-nginx-1)需要通信时:
    • 容器会将数据包发送到网关(20.2.11.1)
    • 网关根据路由规则转发数据包到目标容器的 IP(如 20.2.11.3 → 20.2.11.10)
2. 跨网络通信的桥梁
  • 当容器需要访问其他网络或外部网络(如宿主机、互联网)时:
    • 网关作为 "出口" 将数据包转发到外部网络
    • 例如:容器访问宿主机时,网关会将数据包路由到宿主机的网络接口
3. IP 地址管理与 NAT 转换
  • 网关通常负责网络地址转换(NAT):
    • 容器内部使用私有 IP(如 20.2.11.3)
    • 网关将容器的私有 IP 转换为宿主机的公网 IP,使容器能访问外部网络
    • 同时,网关会记录 NAT 映射,确保外部响应能正确返回给容器
4. 网络隔离与安全控制
  • 不同 Docker 网络拥有独立的网关,实现网络隔离:
    • model_platform_basic网络的容器只能通过 20.2.11.1 网关通信
    • 网关可配合 Docker 的防火墙(iptables)规则,控制进出容器的网络流量

三、结合案例的实际通信流程

以案例中的两个容器为例:
  1. 容器内部通信
    • redis容器(20.2.11.3)要访问nginx容器(20.2.11.10): 
      redis容器 → 数据包发送到网关(20.2.11.1) → 网关转发到20.2.11.10
      
       
  2. 容器访问外部网络
    • nginx容器(20.2.11.10)要访问互联网:
      nginx容器 → 数据包发送到网关(20.2.11.1) → 网关通过宿主机NAT转换 → 互联网 
    • 外部响应返回时,网关通过 NAT 映射将数据包还原给 nginx 容器

四、网关与 Docker 网络模式的关系

  • bridge 模式(案例中的模式):
    • 网关由 Docker 自动创建,通常是网段的第一个可用 IP(如 20.2.11.1)
    • 容器通过网关实现通信和 NAT 转换
  • host 模式:
    • 容器直接使用宿主机网络,无独立网关
  • overlay 模式(分布式网络):
    • 网关由 Docker Swarm 管理,支持跨主机容器通信

五、总结

网关是 Docker 网络的核心组件,它如同网络中的 "交通警察",负责:
  • 管理容器间的通信路由
  • 实现内外网络的地址转换
  • 控制网络流量与隔离
  • 案例中的20.2.11.1正是model_platform_basic网络的 "交通枢纽",确保容器服务的正常通信。
posted @ 2025-07-06 10:54  郭慕荣  阅读(91)  评论(0)    收藏  举报