Windows容器网络架构与管理详解
Windows容器网络架构与管理详解
Windows容器网络是Windows Server中的一项重要功能,它允许容器在不同的网络模式下运行,以满足各种应用场景的需求。本文将详细介绍Windows容器网络的基本架构、管理方式以及不支持的功能和网络选项。
本文内容
适用于:Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows Server 2016
重要提示:有关常规Docker网络命令、选项和语法,请参阅Docker容器网络。除了不支持的功能和网络选项中描述的任何情况之外,所有Docker网络命令在Windows上都支持与Linux相同的语法。但是,Windows和Linux网络堆栈不同,因此你会发现某些Linux网络命令(例如,ifconfig)在Windows上不受支持。
基本网络体系结构
本主题概述Docker如何在Windows上创建和管理主机网络。Windows容器在网络方面的功能与虚拟机类似。每个容器包含一个虚拟网络适配器(vNIC),它可以连接到Hyper-V虚拟交换机(vSwitch)。Windows支持五种不同的网络驱动程序或模式,可通过Docker创建:nat、覆盖、透明、l2bridge和l2tunnel。根据物理网络基础结构和单主机与多主机网络要求,应选择最符合需求的网络驱动程序。
首次运行Docker引擎时,它将创建默认NAT网络“nat”,该网络使用内部vSwitch和名为WinNAT的Windows组件。如果主机上存在通过PowerShell或Hyper-V管理器创建的任何预先存在的外部vSwitch,则它们也可用于使用透明网络驱动程序的Docker,并在运行docker network ls命令时看到。
- 内部vSwitch是未直接连接到容器主机上的网络适配器的vSwitch。
- 外部vSwitch是直接连接到容器主机上的网络适配器的vSwitch。
“nat”网络是Windows上运行的容器的默认网络。在Windows上运行的任何容器(没有任何用于实现特定网络配置的标志或参数)都将附加到默认的“nat”网络,并自动从“nat”网络的内部前缀IP范围分配IP地址。用于“nat”的默认内部IP前缀为172.16.0.0/16。
使用主机网络服务的容器网络管理
主机网络服务(HNS)和主机计算服务(HCS)协同工作,以创建容器并将终结点附加到网络。可以通过HNS Powershell帮助程序模块与HNS交互。
网络创建
- HNS为每个网络创建Hyper-V虚拟交换机
- HNS根据需要创建NAT和IP池
终结点创建
- HNS为每个容器终结点创建网络命名空间
- HNS/HCS将v(m)NIC置于网络命名空间中
- HNS创建(vSwitch)端口
- HNS将IP地址、DNS信息、路由等(受网络模式限制)分配给终结点
创建策略
- 对于默认网络地址转换(NAT)网络,HNS使用相应的Windows防火墙允许规则创建WinNAT端口转发规则和映射。
- 对于所有其他网络,HNS利用虚拟筛选平台(VFP)创建策略,其中包括负载均衡、ACL和封装。有关HNS API和架构的详细信息,请参阅适用于VM和容器的主机计算网络(HCN)服务API。
不支持的功能和网络选项
Windows目前不支持以下网络选项:
- 从Windows Server 2022开始,Windows容器对IPv6网络具有以下支持:
- 附加到l2bridge网络的容器支持IPv6堆栈。
- 附加到透明网络的容器支持使用具有自分配IP地址的IPv6进行通信,但不支持HNS提供的IP地址分配和其他网络服务,例如负载均衡和ACL。
- 附加到NAT和覆盖网络的Windows容器不支持通过IPv6堆栈进行通信。
- 通过IPsec加密的容器通信。
- 主机模式网络。
- 通过透明网络驱动程序在虚拟化Azure基础结构上进行网络。
命令不支持的选项
- docker run:--ip6,--dns-option
- docker network create:--aux-address、--internal、--ip-range、--ipam-driver、--ipam-opt、--ipv6、--opt encrypted