X99 平台下 Docker 部署全攻略

摘要:手持 X99 平台和一张只有 2GB 显存的 GTX 960,还能玩转 Docker 和 AI 吗?本文详细对比了 Docker Desktop 与 WSL Native 两种部署方案,并深入讲解了最令人头秃的网络代理配置、数据迁移。

X99 平台凭借多核心优势,至今仍是很多开发者的主力机。但当你想在 Windows 上通过 Docker 运行 AI 模型时,往往会面临选择困难症:是装简单易用的 Docker Desktop,还是追求极致性能的 WSL 原生命令行?

本文记录了在 Windows (X99) + GTX 960 (2GB) 环境下的完整折腾记录。


第一部分:路线选择——你属于哪一派?

在 Windows 上跑 Docker,主要有两种流派。针对老旧硬件(尤其是显存和内存捉襟见肘的情况),选择至关重要。

方案 A:Docker Desktop (官方推荐,适合新手)

  • 特点:图形化界面,一键安装,自带 NVIDIA 驱动集成。
  • 缺点:内存占用较高(后台常驻 1-2GB),启动稍慢。
  • 适用人群不想折腾配置、内存充足(>32GB)、希望快速上手的用户。

方案 B:WSL 2 Native (极客推荐,适合老机)

  • 特点:在 WSL Ubuntu 内部直接安装 Docker 引擎。没有 GUI,像服务器一样运行,资源占用极低。
  • 缺点:需要手动配置 NVIDIA Container Toolkit,网络代理设置极其繁琐。
  • 适用人群显存/内存紧张(如 2GB 显存)、熟悉 Linux 命令、追求极致性能的开发者。

第二部分:实战配置 —— 方案 A (Docker Desktop)

如果你选择了方案 A,一切都会变得很简单。

1. 搞定网络代理

国内环境下,不配代理几乎无法拉取镜像。

  • 设置路径Settings -> Resources -> Proxies
  • 配置:打开 Manual proxy configuration
  • 填入socks5://localhost:8898 (假设你的代理端口是 8898)
  • 原理:Desktop 会自动处理宿主机到虚拟机的流量,直接填 localhost 即可。

2. 搞定存储迁移 (C 盘搬家)

  • 设置路径Settings -> Resources -> Disk image location
  • 操作:点击 Browse 选择 D 盘目录(如 D:\DockerData),点击 Apply & restart。系统会自动把数据搬过去,释放 C 盘空间。

3. 显卡支持

只要 Windows 安装了最新的 NVIDIA 驱动,Docker Desktop 默认开启 WSL 2 后端即可直接调用显卡,无需额外操作。


第三部分:实战配置 —— 方案 B (WSL Native 命令行)

如果你为了节省资源选择了方案 B,请做好“折腾”的准备,但收益也是巨大的。

1. 安装 Docker 与 显卡工具包

不要用 apt install docker.io

Bash

# 1. 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get.docker.sh

# 2. 安装 NVIDIA Container Toolkit (关键步骤!)
# (需添加 NVIDIA 源,具体命令参考 NVIDIA 官方文档)
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

2. 搞定网络代理 (核心难点)

WSL 内部也是一个独立的系统,配置代理分为三层:

  • 第一层:获取宿主机 IPWSL 访问 Windows 的“魔法域名”是 host.docker.internal。注意:Windows 代理软件必须开启“允许来自局域网的连接”。

第三层:容器内部代理 (用于模型下载)运行容器时必须手动注入:Bash

docker run -e http_proxy="socks5://host.docker.internal:8898" ...

第二层:守护进程代理 (用于 docker pull)修改 /etc/systemd/system/docker.service.d/http-proxy.conf:Ini, TOML

[Service]
Environment="HTTP_PROXY=socks5://host.docker.internal:8898"
Environment="HTTPS_PROXY=socks5://host.docker.internal:8898"

重启服务:sudo systemctl daemon-reload && sudo systemctl restart docker

3. 存储迁移

命令行版需要手动搬运 WSL 发行版:

PowerShell

wsl --shutdown
wsl --export Ubuntu-20.04 D:\backup.tar
wsl --unregister Ubuntu-20.04
wsl --import Ubuntu-20.04 D:\WSL\Ubuntu D:\backup.tar

第四部分:AI 实测与“显存焦虑”

环境搭好后,我们在一张 GTX 960 (2GB) 上运行了测试:

Bash

docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi

测试结果分析:Docker 成功穿透,识别到了 GTX 960。


总结

  • 图省事:选 Docker Desktop,点点鼠标搞定代理和存储,通过 --lowvram 参数尝试跑小模型。
  • 图性能:选 WSL Native,手动配置 config 文件,把每一 MB 显存都留给 MobileSAM。

无论哪种方式,让 X99 这样的老平台通过 Docker 跑起现代 AI 应用,本身就是一种极客的浪漫。Happy Dockering!