windows容器网络重置需区分宿主与容器:用docker network prune -f清理未用网络,stop-service hns -force并删除hns.data可重置hns服务及默认nat等网络,重启hns、wlms、vmcompute服务后容器网络自动重建。
windows 容器(如 docker desktop 中的 linux 容器或 windows server 容器)的网络配置与宿主机网络是隔离的,其网络由 docker 或 containerd 管理,powershell 本身不直接提供“重置容器网络”的原生命令。但你可以通过 powershell 调用 docker cli 或管理底层容器网络组件,实现快速清理和重建容器网络环境。
以下是针对常见场景的实用操作方式:
使用 PowerShell 清理并重建 Docker 默认网络
适用于:Docker Desktop 或 Windows Server 上运行的容器出现 docker network ls 异常、容器无法互通、DNS 解析失败、桥接网关不可达等问题。
- 以管理员身份打开 PowerShell
- 执行以下命令序列(逐条运行,无需等待提示符返回即可继续):
# 停止所有正在运行的容器(避免网络被占用) docker stop $(docker ps -q) # 删除所有容器(含已停止的) docker rm -f $(docker ps -aq) # 删除所有自定义网络(默认 bridge/networks 不会删除,但可强制清理) docker network prune -f # 可选:重置 Docker 内置的默认 bridge 网络(需重启 Docker 服务) # 注意:此操作会清除所有网络配置,包括自定义网桥、NAT 规则等 Restart-Service docker
✅ 提示:
docker network prune -f是最安全的“软重置”,它只删未使用的网络;若问题顽固,配合Restart-Service docker可刷新整个网络栈(Docker 会自动重建bridge、host、none等默认网络)。
重置 Windows 容器(Windows Server Containers)专用网络
适用于:使用 docker run --isolation=process 或 Hyper-V 隔离的 Windows 容器,出现 HNS(Host Network Service)错误、Failed to create endpoint、network not found 等。
- 在 PowerShell(管理员)中执行:
# 停止 HNS 服务(Host Network Service),清空其状态 Stop-Service hns -Force Remove-Item -Path "$env:ProgramData\Microsoft\Windows\HNS\hns.data" -Force -ErrorAction Ignore Start-Service hns # 同时重启相关依赖服务 Restart-Service wlms -Force Restart-Service vmcompute -Force
⚠️ 注意:
hns.data是 HNS 的持久化数据库,删除后 HNS 会在启动时重建默认网络(nat、transparent、l2bridge)。该操作不影响宿主机网络,但所有 Windows 容器需重新启动才能接入新网络。
检查与验证容器网络状态
执行重置后,建议用以下 PowerShell 命令快速确认:
# 查看当前网络列表 docker network ls # 查看默认 nat 网络详情(Windows 宿主常用) docker network inspect nat # 测试容器内基础连通性(启动一个临时容器 ping 宿主网关) docker run --rm mcr.microsoft.com/windows/servercore:ltsc2022 powershell -c "Test-Connection 172.28.0.1 -Count 2"
? 小技巧:
172.28.0.1是 Windows Docker 默认nat网络的网关地址(宿主机侧),若该地址 ping 不通,说明 nat 网络未正常初始化。
不复杂但容易忽略:容器网络重置 ≠ 宿主机网络重置。务必区分 netsh(管宿主)和 docker network / hns(管容器),混用可能导致误操作。











