Windows 11 下利用 Docker 搭建 CUDA 开发环境
最近在尝试 CUDA 编程时,经历了在 Windows 和 WSL 上安装 CUDA、cuDNN、CMake 及 GCC 等依赖的种种波折。本地环境配置不仅耗时,还容易污染系统。后来转向 Docker 容器化方案,隔离性好且复用方便,体验提升明显。
硬件与软件环境
本次实践基于以下配置:
- 操作系统: Windows 11
- 显卡: RTX 3060
- 驱动版本: 537.42
- CUDA 版本: 12.2
- Docker: Docker Desktop 4.12.0
容器化 GPU 透传
目前新版 Docker Desktop 已原生支持 GPU 透传,无需额外安装 nvidia-docker 插件。只需在启动命令中添加 --gpus all 参数即可调用宿主机显卡。
例如,运行测试容器时可参考如下命令:
docker run -it --gpus all --name gpu_test \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
mortals/codeenv:conda-cuda11.8
这里需要注意几个关键点:
--gpus all是启用 GPU 的核心参数。NVIDIA_VISIBLE_DEVICES=all确保容器能访问所有可用设备。- 镜像选择需与宿主机的驱动版本兼容,上述示例使用了 conda 基础镜像,实际项目中建议根据具体依赖定制 Dockerfile。
关于 Dockerfile 的编写,核心在于安装对应的 CUDA Toolkit 及相关库。由于不同项目对版本要求各异,建议参照官方文档或现有镜像结构进行适配,避免直接复制导致版本冲突。
通过这种方式,可以最大程度减少环境差异带来的调试成本,让开发者专注于算法与业务逻辑本身。

