副标题:基于 Hyper-V 虚拟机与 Ubuntu Docker 的“飞地”架构设计

撰写时间: 2026年03月27日
适用环境: 外网 Win10 + 内网 WinServer 2019 + 物理隔离 + OpenClaw (OpenWebUI等)


📝 前言

在企业内网物理隔离的环境下,既要保证服务的稳定性,又要兼顾开发部署的便捷性,是一个典型的“孤岛”运维场景。传统的 Windows 容器兼容性差,而 WSL2 在 Server 2019 上配置复杂且不稳定。

本文记录了一种**“Windows 宿主机 + Hyper-V Linux 虚拟机 + Docker 原生环境”**的最优解架构。我们将内网 Windows Server 2019 变为一个强大的虚拟化底座,利用 Ubuntu 虚拟机为 OpenClaw 提供完美的 Linux 运行时环境。


🏗️ 第一部分:核心架构设计

在设计之初,我们确立了以下技术栈,以确保在无外网环境下依然能获得最佳的 Linux 容器体验。

组件选型理由
物理宿主机Windows Server 2019企业标准服务器系统,自带 Hyper-V,无需额外安装第三方虚拟机软件。
虚拟化层Hyper-V (Generation 2)微软原生虚拟化,性能损耗极低,支持 UEFI 快速启动,且在 Server 版本中支持最完善。
客户机 OSUbuntu 22.04 LTS Server长期支持版本,资源占用低(无 GUI),Docker 兼容性最好,社区支持最广。
运行时Docker Engine (Linux)原生 Linux Docker,避免了 Windows 容器对 Linux 应用的兼容性黑洞。
目标应用OpenClaw + PG + Redis标准的容器化 AI 应用栈。

📦 第二部分:外网机器准备工作 (Win10)

由于内网完全断网,所有依赖必须在 Win10 上预先下载并打包。

1. 操作系统镜像准备
2. Docker 离线安装包构建

不要试图在内网使用 apt,必须准备 .deb 离线包。

  • 操作步骤:
    1. 在 Win10 上安装 Docker Desktop 或使用一台联网的 Ubuntu 机器。
    2. 访问 Docker 官方仓库,下载以下核心包及其依赖(注意:必须匹配 Ubuntu 22.04 的架构):
      • docker-ce
      • docker-ce-cli
      • containerd.io
      • docker-compose-plugin
      • NVIDIA Container Toolkit 
    3. 关键依赖: 使用 apt-rdepends 或手动下载 libc6, libseccomp2, pigz, xz-utils 等基础依赖包。
    4. 打包: 将所有 .deb 文件放入文件夹 docker-debs
3. OpenClaw 镜像构建与导出

为了避免在内网安装 Node.js 依赖和 Playwright 浏览器内核(极其耗时且需要网络),必须在外部构建好镜像。

  • 构建: 在 Win10 的 Docker Desktop 中构建 OpenClaw 镜像。
    docker build -t openclaw:v1 .
    
  • 导出:
    # 导出应用镜像
    docker save -o openclaw-image.tar openclaw:v1
    
    # 导出依赖镜像 (Postgres & Redis)
    docker pull postgres:15-alpine
    docker pull redis:7-alpine
    docker save -o db-images.tar postgres:15-alpine redis:7-alpine
    
4. 资源包汇总 (DeployPackage)

将以下文件刻录至移动硬盘或通过摆渡机传输:

  • ubuntu-22.04-live-server-amd64.iso
  • docker-debs/ (文件夹)
  • openclaw-image.tar
  • db-images.tar
  • openclaw-source/ (含 docker-compose.yml.env 的源码文件夹)

⚙️ 第三部分:内网机器环境部署 (WinServer 2019)

1. 启用 Hyper-V 角色

以管理员身份运行 PowerShell:

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

重启后,打开“Hyper-V 管理器”。

2. 创建 Ubuntu 虚拟机 (Generation 2)
  • 代数: 第二代 (支持 UEFI,启动快)。
  • 内存: 建议 8GB - 16GB (OpenClaw + 数据库内存占用较高)。
  • 网络配置 (关键):
    • 创建 外部虚拟交换机,绑定到服务器物理网卡。
    • 勾选: “允许管理操作系统共享此网络适配器” (防止宿主机断网)。
    • 效果: Ubuntu 将获得与宿主机同网段的 IP,内网其他同事可直接通过 IP 访问 OpenClaw。
  • 硬盘: 动态扩展,建议 100GB+ (模型缓存和日志会占用空间)。
3. 安装 Ubuntu Server
  • 启动虚拟机安装 ISO。
  • 网络: 建议配置为 静态 IP (例如 192.168.1.200),方便内网服务固定访问。
  • 软件选择: 务必勾选 OpenSSH Server (方便后续使用 XShell/Putty 管理,无需切窗口操作)。

🐳 第四部分:Ubuntu 内 Docker 与服务部署

1. 离线安装 Docker

docker-debs 上传至 Ubuntu,执行:

cd /path/to/docker-debs
sudo dpkg -i *.deb

若报依赖错误,需补全缺失的 .deb 包。

启动服务:

sudo systemctl enable --now docker
sudo usermod -aG docker $USER # 重新登录生效
2. 导入镜像

上传 openclaw-image.tardb-images.tar

docker load -i openclaw-image.tar
docker load -i db-images.tar

执行 docker images 验证是否加载成功。

3. 启动服务

上传 openclaw-source,修改配置:

  • 端口映射: 确保 docker-compose.yml 中映射了 Web 端口(如 18789:18789)。
  • 模型配置: 若内网部署了 Ollama,需将 LLM_BASE_URL 指向宿主机或模型服务器的内网 IP。

启动命令:

docker compose up -d

⚠️ 第五部分:关键避坑指南 (Troubleshooting)

  1. BIOS 设置:

    • 确保物理服务器 BIOS 开启了 VT-x / AMD-V 虚拟化支持。
    • 如果虚拟机报错,可能需要开启嵌套虚拟化(虽然 Docker 不需要,但有时会影响检测):
      Set-VMProcessor -VMName "UbuntuVM" -ExposeVirtualizationExtensions $true
      
  2. 内存不足预警:

    • Windows Server 2019 自身占用约 2-4GB,Ubuntu 约 1GB,Docker 服务至少需要 4GB+。
    • 建议: 若物理内存仅为 16GB,建议在 docker-compose.yml 中为 PostgreSQL 和 OpenClaw 设置 mem_limit,防止 OOM (内存溢出) 导致服务崩溃。
  3. 时间同步问题:

    • 虚拟机时间容易漂移,导致 API 请求签名失败。
    • 解决: 在 Ubuntu 中安装 chrony 并指向内网 NTP 服务器,或在 Hyper-V 设置中关闭“时间同步集成服务”。
  4. 防火墙策略:

    • Windows 防火墙: 确保放行 Ubuntu 虚拟机的通信端口。
    • Ubuntu 防火墙 (UFW): 若开启,需放行 Docker 端口(默认 2376-2377, 18789 等)。

结语:
通过这种架构,我们成功在内网 WinServer 2019 上构建了一个“Linux 原生”的 AI 服务环境。OpenClaw 现已稳定运行,内网用户可通过浏览器直接访问这只“小龙虾”!

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐