本地跑 YOLO 目标检测,环境配置是个大坑——Python 版本、CUDA、驱动、库冲突,搞半天可能还没跑起来。用 Docker 的话,一个镜像全搞定,省心不少。这篇记录了我自己在 Windows 10 上,通过 Docker 部署 YOLOv8,然后把检测能力封装成 Spring Boot 接口的过程,包含了踩过的坑和排查方法。
环境说明
- 操作系统:Windows 10/11(建议开了 WSL2)
- Docker Desktop 20.0+
- JDK 17(Spring Boot 3.2.x 需要)
- Maven 3.6+
- Spring Boot 3.2.4
- YOLO 模型:yolov8n.pt(轻量版,纯 CPU 跑也没问题)
Docker 与文件共享配置要点
安装 Docker Desktop 之后,最好确认 WSL2 后端已启用(Settings → General → Use the WSL 2 based engine),性能比老 Hyper-V 后端好。
另外,为了让 Docker 容器能访问本地文件,需要在 File Sharing 里加一下你的工作目录。比如我用的 D:\yolo_test,就在 Settings → Resources → File Sharing 添加这个路径,然后重启 Docker。不然挂载目录的时候会报权限错误。
在 Docker 里跑 YOLOv8
先拉取官方镜像,里面已经装好了所有依赖:
docker pull ultralytics/ultralytics:latest
运行容器并挂载本地目录,这里 Windows 路径要写成 /d/yolo_test 而不是 D:\yolo_test,这是最容易掉坑的地方:
docker run -it --rm -v /d/yolo_test:/yolo_data ultralytics/ultralytics:latest
参数解释:
-it:交互终端--rm:退出后自动删除容器,不留垃圾-v /d/yolo_test:/yolo_data:把本机D:\yolo_test挂到容器内/yolo_data
进入容器后,先确认挂载是否成功:
ls /yolo_data
如果没看到你放进去的测试图片,大概率是路径写错了,或者 Docker Desktop 的文件共享没生效。
第一次检测
在本地 D:\yolo_test 里放一张 test.jpg(注意文件名完全一致,不要 Test.jpg 或 test.JPG)。然后在容器内运行:
yolo detect predict model=yolov8n.pt source=/yolo_data/test.jpg save=True
model=yolov8n.pt:用 nano 版模型,体积小速度快source=/yolo_data/test.jpg:容器内挂载路径下的图片save=True:保存带检测框的结果图
正常情况下,日志会打印出识别到的物体和耗时:
image 1/1 /yolo_data/test.jpg: 640x480 1 cup, tv, mouse, refrigerator, book, ms
Speed: ms preprocess, ms inference,

