You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows容器实现类似internal:true的网络配置方案求助

问题

需要在docker-compose.yml中配置两个基于Windows镜像的服务:

  • frontend:Nginx服务,需能访问互联网,同时与backend通信
  • backend:ASP.NET应用,仅允许与frontend通信,不能访问互联网

但Windows容器不支持Linux容器常用的internal: true网络属性及bridge网络驱动,尝试l2bridge等驱动未成功,求可行配置方案。

以下为Linux容器可用但Windows容器无法运行的配置代码:

version: "3.8"
services:
  frontend:
    build: "./proxy"
    depends_on:
      - backend
    ports:
      - "8080:4000"
    networks:
      - internal_network
      - out_network
  backend:
    build: "./webapp"
    expose: 
      - "80"
    networks:
      - internal_network
networks:
    internal_network:
      internal: true
    out_network: {}
可行配置方案

Windows容器的网络模型和Linux不一样,我们可以通过创建两个nat类型网络(Windows容器默认支持),结合网关配置实现需求:一个用于内部专属通信,一个用于互联网访问。

完整配置代码

version: "3.8"

services:
  frontend:
    build: "./proxy"
    depends_on:
      - backend
    ports:
      - "8080:4000"
    # 同时挂载内部和外部网络,兼顾通信与上网需求
    networks:
      - internal_only
      - external_access

  backend:
    build: "./webapp"
    expose:
      - "80"
    # 仅挂载内部网络,无网关无法访问互联网
    networks:
      - internal_only

networks:
  internal_only:
    driver: nat
    ipam:
      config:
        - subnet: 192.168.200.0/24
          gateway: "" # 空网关配置,彻底阻断此网络容器的外部访问
  external_access:
    driver: nat
    ipam:
      config:
        - subnet: 192.168.201.0/24
        # 留空网关会自动使用宿主机默认网关,实现互联网访问

配置说明

  • internal_only网络:用nat驱动,通过空网关设置,让挂载它的backend容器只能和同网络的frontend通信,完全无法访问互联网。
  • external_access网络:同样用nat驱动,自动使用宿主机默认网关,让frontend能正常访问互联网,同时通过挂载internal_only网络和backend互通。
  • 两个网络用不同子网,避免IP冲突,保证隔离效果。

内容的提问来源于stack exchange,提问作者nguyendt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:47:13