跳至主要内容
工具记录约 20 分钟

Docker 入门实践:从网页工具箱到 GPU 视觉模型

Windows Docker 与 WSL 2 配置、Docker Desktop 界面图解、容器管理、端口和数据持久化,以及 IT-Tools、rembg GPU 部署与排错。

#Docker#WSL 2#GPU#计算机视觉#模型部署
笔记目录 →
本文目录
  1. 1. Docker 与核心概念
  2. 2. Windows 安装与配置:一步一步操作
  3. 2.1 查看处理器架构,决定下载哪个版本
  4. 2.2 从官网下载 Docker Desktop
  5. 2.3 选择安装选项
  6. 2.4 第一次打开 Docker Desktop
  7. 2.5 缺少 WSL 或提示 WSL 需要更新
  8. 2.6 本次遇到的错误:虚拟机平台未启用
  9. 2.7 验证安装成功
  10. 3. Docker Desktop 界面图解
  11. 3.1 ① 顶部工具栏与 ② 左侧导航
  12. 3.2 ③ 资源概览与 ④ 搜索筛选
  13. 3.3 ⑤—⑧ 怎样读懂一行容器信息
  14. 3.4 ⑨ 操作按钮:启动、停止、诊断和删除
  15. 3.5 ⑩ 学习教程与 ⑪ 底部状态栏
  16. 4. 从 Nginx 理解端口与容器
  17. 常用命令
  18. 5. 运行 GitHub 项目的三种方式
  19. Compose 管理
  20. 数据持久化
  21. 6. IT-Tools 实战与自部署意义
  22. 打开的是 Nginx 页面
  23. 为什么不直接用官网
  24. 7. 人工智能与 Docker
  25. 8. rembg GPU 抠图部署
  26. 8.1 验证 GPU 通路
  27. 8.2 下载与构建
  28. 8.3 启动服务
  29. 8.4 验证效果与实际 GPU 推理
  30. 9. Docker Hub 超时排错
  31. 10. 排错速查
  32. 11. 参考资料

1. Docker 与核心概念

Docker 用于构建、分发和运行应用。它把程序及其用户空间依赖打包成镜像,再创建容器运行,减少手工安装与版本冲突。镜像不是跨所有系统和硬件通用的,操作系统、CPU 架构仍需匹配。

概念含义
镜像 Image应用、依赖和默认启动配置的模板
容器 Container从镜像创建的实例,具有运行状态和可写文件层
Registry镜像存储与分发服务,如 Docker Hub
Dockerfile描述镜像构建步骤的文件
Docker Compose用 YAML 配置多个服务、网络、环境变量和挂载
VolumeDocker 管理的持久化存储
Bind mount把电脑上的指定目录映射到容器中

同一镜像可以创建多个容器。容器通常共享所在环境的内核,不是每个容器都启动完整操作系统。Windows 上的 Linux 容器由 WSL 2 提供 Linux 环境。

Windows、WSL 2、Docker 引擎与应用容器的层级关系

常见用途:快速体验软件、统一团队开发环境、部署网站、运行数据库、自动化测试,以及部署深度学习训练或推理环境。

2. Windows 安装与配置:一步一步操作

本次在 Windows 上安装 Docker Desktop,使用 WSL 2 后端运行 Linux 容器。开始前可查看 Docker Desktop Windows 官方安装说明与系统要求,确认 Windows 版本、WSL 和硬件虚拟化支持。

2.1 查看处理器架构,决定下载哪个版本

  1. 按 Win + I 打开 Windows“设置”。
  2. 进入 系统 → 系统信息(关于),通常在系统页面最下方,不同 Windows 版本名称略有区别。
  3. 在 设备规格 中找到 系统类型,查看处理器架构。
系统类型显示的内容Docker Desktop 下载选项
64 位操作系统,基于 x64 的处理器Windows – AMD64
64 位操作系统,基于 ARM 的处理器(或 ARM64)Windows – ARM64

也可以右键开始菜单,选择“系统”。找不到时,在设置搜索框输入“关于你的电脑”或“系统类型”。

不要只看“64 位操作系统”:x64 和 ARM64 都可以是 64 位,决定下载版本的是处理器架构。AMD64 也称 x86-64 或 x64,适用于常见 Intel 和 AMD 处理器,并非只有 AMD 能用。

2.2 从官网下载 Docker Desktop

  1. 打开 Docker Desktop 官方下载页。
  2. 点击 Download Docker Desktop,在平台菜单中选择上一步确认的 Windows – AMD64 或 Windows – ARM64。
  3. 等安装程序下载完成。不要选择 Mac 或 Linux 版本。
  4. 双击下载的安装程序。如果 Windows 弹出权限确认,确认发布者及来源后按安装提示继续。

按钮名称和安装界面会随版本变化,遇到差异可对照 Windows 官方安装说明。

2.3 选择安装选项

在本次安装程序的 Configuration 页面中使用以下配置:

选项本次选择说明
Per-user installation (Recommended)选中只给当前 Windows 用户安装;系统功能变更仍可能需要管理员权限
All-users installation不选多用户安装,本次个人学习不需要
Use WSL 2 instead of Hyper-V保持勾选使用 WSL 2 后端;当前模式下灰色勾选是正常的
Allow Windows Containers不勾选本次使用 Linux 容器,运行 Nginx、IT-Tools、rembg
Add shortcut to desktop保持勾选创建桌面快捷方式,方便启动

点击右下角 OK 开始安装,等待完成。安装程序要求注销或重启时,先保存工作再按提示操作。

Docker Desktop 提供管理界面、命令工具与引擎管理;WSL 2 提供 Linux 环境。具体原理可阅读 Docker Desktop WSL 2 后端说明。不必为了 Docker 再手动安装 Ubuntu 发行版。

2.4 第一次打开 Docker Desktop

  1. 从桌面快捷方式或开始菜单打开 Docker Desktop。
  2. 首次启动如出现服务协议,阅读后按自己的使用情况接受并继续;许可适用范围见 Docker Desktop 订阅服务说明。
  3. 个人运行本地容器通常无需先登录 Docker 账号;如出现引导,可按界面提供的跳过入口继续。
  4. 等待引擎启动。界面底部应显示引擎正在运行(例如 Engine running);Engine stopped 表示还不能正常运行容器。

如果出现 WSL 或虚拟机平台提示,先按下两步解决,再回来检查引擎状态。

2.5 缺少 WSL 或提示 WSL 需要更新

打开管理员 PowerShell 的方法:点击开始菜单,搜索 PowerShell,右键选择 以管理员身份运行,在权限提示中确认。

如果 WSL 尚未安装,执行:

wsl --install

根据提示重启电脑。这条命令通常也会安装默认 Linux 发行版;该发行版可用于自己学习 Linux,但不是 Docker 运行所必需。更多选项见 Microsoft WSL 安装教程。

如果已经有 WSL,只提示版本过旧或需要更新,执行:

wsl --update

执行完按提示操作,并重新打开 Docker Desktop。查看版本和状态可使用:

wsl --version
wsl --status

命令作用见 Microsoft WSL 基本命令。

2.6 本次遇到的错误:虚拟机平台未启用

Docker Desktop 显示 Virtual Machine Platform not enabled 时,说明 WSL 2 所需的 Windows 组件没有开启。本次按以下步骤处理:

  1. 按上一节的方法打开 管理员 PowerShell。
  2. 复制下面这一整行命令,粘贴并按回车:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart
  1. 等待执行成功,保存正在编辑的文件。
  2. 从 Windows 开始菜单选择 电源 → 重启。命令中的 -NoRestart 表示不自动重启,因此需要自己操作;仅关闭并重开 Docker 不够。
  3. 重启后再次打开 Docker Desktop,等待引擎启动。如果仍停留在原错误页,可以点击 Recheck and retry 重新检查。

该命令启用虚拟机平台及所需组件,解释见 Microsoft Enable-WindowsOptionalFeature 文档。如果仍报硬件虚拟化相关错误,可在 任务管理器 → 性能 → CPU 查看“虚拟化”是否启用,再对照 Microsoft WSL 故障排查;BIOS/UEFI 设置方式以电脑厂商说明为准。

2.7 验证安装成功

引擎正常运行后,打开普通 PowerShell 即可;如果安装前已打开终端,先关闭并新开一个,让 PATH 更新生效。

docker --version
docker version

docker --version 仅检查命令工具是否可用;docker version 同时输出 Client 和 Server 信息,才说明当前能连接引擎。连接失败时先检查 Docker Desktop 是否运行。

再运行一个一次性的官方测试容器:

docker run --rm hello-world

第一次需要联网下载镜像。看到 Hello from Docker!,说明下载、创建和运行这条链路正常。--rm 在结束后删除测试容器,镜像仍会保留。示例来源:Docker Hub 官方 hello-world 镜像。

到这里,Docker 环境就准备好了。下一节介绍管理界面,之后再用 Nginx 练习长期运行的网页服务。测试镜像下载超时时,参考本文后面的 Docker Hub 网络排错部分。

3. Docker Desktop 界面图解

安装完成后,先认识 Docker Desktop 的管理界面。下面以本次 Containers 页面截图为例,用红色方框标出 11 个区域;图中的编号与下文对应。不同版本的菜单和图标可能略有变化。

Docker Desktop Containers 页面:用编号 1 至 11 标出顶部工具栏、左侧导航、资源概览、搜索筛选、容器名称与状态、ID 与镜像、端口、运行指标、操作按钮、学习教程和底部状态栏
图:Docker Desktop v4.94.0 界面分区。原始截图来自本次操作记录,红框与编号为后加标注。手机上可横向滑动查看;打开标注大图,或查看未标注原图。

3.1 ① 顶部工具栏与 ② 左侧导航

① 顶部工具栏提供全局入口。Search 是全局搜索,可查找容器、镜像等资源,图中快捷键为 Ctrl+K。问号打开帮助,铃铛查看通知,齿轮进入 Settings,其余图标提供学习、诊断或应用功能入口,具体以悬停提示为准。网络代理、启动选项和 WSL 集成等配置都从 Settings 查找。Sign in 登录 Docker 账号,用于访问账号关联的 Docker Hub 仓库等功能;个人本地容器通常可以在未登录时运行。

左上角的 docker desktop 是软件标识,PERSONAL 表示订阅方案,不是当前容器的状态。最右侧的最小化、最大化和关闭按钮是 Windows 窗口控件。

② 左侧导航决定主区域显示哪一类对象。图中高亮的 Containers 表示当前正在查看容器。

菜单用来做什么本笔记中的使用场景
GordonDocker 的 AI 助手,辅助解释命令和诊断问题需要帮助理解报错时使用,建议核对其回答
Containers查看已创建的容器、运行状态、日志和操作入口启动或停止 it-tools、rembg
Images查看和管理本地镜像,也可从镜像创建容器确认 rembg-gpu 是否构建成功
Logs集中查看容器日志查找启动失败、模型下载或服务报错信息
Volumes管理 Docker 保存的持久化数据卷查看数据库、模型缓存等数据卷
Kubernetes管理启用后的 Kubernetes 环境和资源学习单个容器时暂时用不到
Builds查看镜像构建记录、步骤和构建日志排查 Dockerfile 构建失败的位置
ModelsDocker Model Runner 的模型管理和运行入口与本次通过 rembg 容器部署模型是不同入口
MCP Toolkit(BETA)配置容器化的 MCP 服务,让 AI 客户端调用工具需要连接 AI 工具服务时使用
Docker Hub浏览、搜索和获取镜像仓库中的镜像查找现成应用镜像
Extensions安装和管理 Docker Desktop 扩展按需增加辅助工具

初学时优先熟悉 Containers、Images、Volumes、Builds。镜像在 Images 中存在,只能说明模板已经准备好;应用是否启动,要到 Containers 看实例状态。

3.2 ③ 资源概览与 ④ 搜索筛选

③ 资源概览显示容器的 CPU 和内存使用情况,Show charts 可以展开趋势图。截图两处都显示 No containers are running.,说明此时没有容器正在运行;这不意味着本地没有镜像或没有创建容器。

④ 搜索筛选只作用于当前容器列表,与顶部的全局搜索不同。

  • Search:按容器或 Compose 项目名称查找,例如输入 rembg。
  • 搜索框右侧的列图标:选择显示哪些表格列,也可调整列的顺序。
  • Only show running containers:开启后只显示运行中的容器。截图中的开关处于关闭状态,所以停止的容器仍然可见。

如果打开“只看运行中”后列表空了,先关闭筛选,再判断容器是否存在。

3.3 ⑤—⑧ 怎样读懂一行容器信息

列表中每一行对应一个容器。截图中的 it-tools 和 rembg 是两个已经创建、当前未运行的容器。

编号列或元素读法
⑤左侧复选框选择一行或多行,进行批量启动、停止、删除等操作;选中不等于启动
⑤状态圆点与 Name圆点提示运行状态,名称用于识别容器;点击名称可打开详情。图中空心状态圆点结合上方提示和右侧启动按钮,表明容器未运行
⑥Container ID容器的唯一标识,界面通常显示短 ID;命令中可以使用名称或 ID 指定容器
⑥Image创建该容器所用的镜像。rembg 是容器名称,rembg-gpu 是镜像名称;两者可以不同
⑦Port(s)已配置的主机端口与容器端口映射,按“主机端口:容器端口”阅读
⑧CPU (%)容器的 CPU 使用情况;图中的 N/A 表示此时没有可用统计值,不能据此判断镜像损坏
⑧Last…最近启动时间等时间信息;截图中列名被截断,可调宽或悬停确认。19 h、18 h 不是正在持续运行的证明

⑦ 端口列最值得结合实际应用理解:

  • it-tools 的 8080:80:浏览器访问自己电脑的 http://localhost:8080,请求会转到容器内的 80 端口。
  • rembg 的 7000:7000:浏览器访问 http://localhost:7000,请求转到容器内的 7000 端口。

端口映射在容器停止后仍会列出来,看到端口不代表网页已经可访问。需要先启动容器,并确认容器内服务正常监听。短格式的端口列也没有完整显示绑定地址,若要确认是否只允许本机访问,应检查容器详情或 docker port <容器名> 的输出。

点击容器名称后,详情页通常提供 Logs(日志)、Inspect(配置)、Bind mounts(目录挂载)、Exec/Debug(容器内命令或调试)、Files(文件)和 Stats(资源统计)等标签。网页打不开时,先看 Logs;核对端口、环境变量和挂载时,查看 Inspect 与 Bind mounts。

3.4 ⑨ 操作按钮:启动、停止、诊断和删除

⑨ Actions 是每个容器的操作区。截图从左到右可以看到机器人图标、蓝色三角形、三点菜单和红色垃圾桶。

按钮含义操作时注意什么
机器人图标Gordon 的容器诊断或问题建议入口它是辅助分析入口,不是启动按钮
蓝色三角形 ▶启动已有容器,相当于 docker start <容器名>不会重新构建镜像,也不会创建另一个同名容器
运行后的停止按钮停止容器,相当于 docker stop <容器名>容器及其配置仍保留,之后可以再次启动
三点菜单 ⋮展开更多操作,如重启、暂停、终端、调试等可用选项随版本和容器状态变化
红色垃圾桶删除该容器容器可写层中的数据会随之丢失;镜像不会因此自动删除,挂载数据要单独确认

以 it-tools 为例:点击它这一行的 ▶,确认状态变为运行中,再访问 http://localhost:8080。如果刚启动就退出,点击名称查看 Logs。只想暂时关闭应用时使用停止;需要改端口、挂载或启动参数时,通常要按新的配置重建容器。

3.5 ⑩ 学习教程与 ⑪ 底部状态栏

⑩ Walkthroughs 是内置学习教程区。图中的 Multi-container applications 介绍多容器应用,Containerize your application 介绍把自己的应用容器化;View more in the Learning center 打开更多教程,右上角 × 关闭教程展示。这些卡片是学习入口,不表示相应应用已经部署。

⑪ 底部状态栏显示引擎状态、资源统计以及终端和版本入口。

  • 左侧 Resource Saver mode:Docker 当前处于空闲节能状态。Windows 的 WSL 2 后端会暂停 Docker 引擎以降低 CPU 消耗,并不等于把整个 WSL 虚拟机关闭或释放全部内存;启动容器会自动退出该模式。
  • RAM、CPU:Docker 界面报告的资源使用统计,不是电脑的内存容量或 CPU 总性能。图中的 RAM 0.00 GB 也不代表整台电脑没有使用内存。
  • Disk: 28.06 GB used (limit 1006.85 GB):Docker 数据存储的占用与容量上限。即使容器停止,镜像、构建缓存、容器文件和数据卷仍可能占据磁盘。
  • 右下角 >_:Docker Desktop 的终端入口。它与进入某个容器内部的 Exec 是不同入口。
  • v4.94.0:本次 Docker Desktop 版本,不是镜像版本、CUDA 版本或容器版本。

因此,这张截图可以读成:已有 it-tools 和 rembg 两个容器,分别配置了 8080 和 7000 的主机端口;两个容器当前都未运行,Docker 处于 Resource Saver 模式,磁盘中的镜像与数据仍然保留。

4. 从 Nginx 理解端口与容器

docker run -d --name my-web -p 127.0.0.1:8080:80 nginx

本地没有镜像时会先下载。启动后访问 http://localhost:8080,可看到 Nginx 欢迎页。

  • run:创建并启动新容器。
  • -d:后台运行。
  • --name:指定容器名称。
  • -p 127.0.0.1:8080:80:本机 8080 转发到容器 80。
  • nginx:镜像名称;省略标签默认使用 latest。

localhost 是自己的电脑。主机的端口写在前面,容器的端口写在后面。不同容器内部都能使用 80,但不能同时绑定主机同一地址的 8080。

本笔记的命令使用 127.0.0.1 限制本机访问。此前使用的 -p 8080:80 通常绑定所有主机接口,局域网能否访问还取决于防火墙等配置。

常用命令

docker ps                       # 正在运行的容器
docker ps -a                    # 所有容器,包括已停止或仅创建的
docker images                   # 本地镜像
docker logs --tail 100 my-web    # 最近日志
docker logs -f my-web            # 持续查看,Ctrl+C 退出查看
docker exec -it my-web sh        # 在运行中的容器打开 shell
docker stop my-web               # 停止并保留
docker start my-web              # 启动已有容器
docker rm -f my-web              # 强制停止并删除该容器

shell 中输入 exit 返回 PowerShell。退出日志查看不停止后台服务。

**run 创建新容器,start 启动已有容器。**再次执行同名 run 会名称冲突。删除容器不会自动删除镜像。

5. 运行 GitHub 项目的三种方式

GitHub 保存代码和文档;项目有现成镜像时,不一定需要下载源码。

作者提供的内容做法
镜像与 docker run 示例按 README 设置端口、环境变量和挂载后运行
compose.yaml 或 docker-compose.yml准备配置,在对应目录运行 Compose
源码与 Dockerfile下载源码,构建镜像,再按要求运行

常见构建命令:

docker build -t my-service .

末尾 . 是构建上下文,Dockerfile 不一定包含完整部署配置。运行前查看密码、API Key、数据目录、CPU/GPU 和模型下载要求。只运行可信项目;遇到特权模式、Docker socket 或整个磁盘挂载,要了解其用途。

Compose 管理

docker compose up -d
docker compose ps
docker compose logs --tail 100
docker compose stop
docker compose start
docker compose down

在含 Compose 文件的目录执行。.env 常用于变量替换,不意味着其中所有变量自动传入容器。不要公开提交密码和 API Key。

down 默认移除容器及相关网络,保留命名卷;down -v 会删除相关卷,使用前确认数据。

数据持久化

停止容器保留文件,删除容器会删除其可写文件层。数据库、上传文件和后续下载的模型通常使用卷或文件夹挂载保存。镜像中已有的文件仍保留在镜像中。

挂载会遮住目标目录原有内容。模型缓存要确认实际路径,避免挂错目录导致重复下载。

6. IT-Tools 实战与自部署意义

项目:CorentinTh/it-tools。官网:it-tools.tech。

docker run -d --name it-tools --restart unless-stopped -p 127.0.0.1:8080:80 corentinth/it-tools:latest

访问 http://localhost:8080,测试 UUID 生成、JSON 格式化等功能。

--restart unless-stopped 在引擎运行且符合策略时自动恢复服务,手动停止的容器保持停止;它不保证 Docker Desktop 本身随 Windows 启动。

打开的是 Nginx 页面

本次排错的可能原因是旧容器 my-web 占用 8080,新容器 it-tools 被创建但未成功运行。先用 docker ps -a 核实名称、状态和端口。确认后:

docker stop my-web
docker start it-tools

重新访问,必要时 Ctrl+F5。也可创建容器时换主机端口。已创建容器的端口映射通常需要重建才能修改。

为什么不直接用官网

偶尔用官网更方便。自部署适合离线使用、官网不稳定、固定版本、修改功能或内网共享,代价是自己维护更新并占用资源。

IT-Tools 很多功能在浏览器处理,访问官网不意味着输入必然上传。自部署也不自动保证应用不会联网。本次自部署的主要收益是学习拉取、启动、访问和排错。

7. 人工智能与 Docker

深度学习依赖 Python、PyTorch 或 ONNX Runtime、CUDA、cuDNN、图像库和模型权重。Docker 把环境固定下来,便于复现和迁移。

用途实际工作
推理用训练好的模型完成检测、分割、抠图或生成
训练挂载数据集,训练并持久化权重和日志
服务部署持续运行模型,通过网页或 API 接收请求

Docker 本身不做 AI,也不会自动获得算力。镜像可能不含权重;GPU 需要驱动、运行环境和模型后端兼容。

本次硬件为 RTX 4060、8 GB 专用显存、约 32 GB 内存,适合入门视觉推理。任务管理器里约 23.9 GB 的 GPU 总内存包含共享系统内存,不等于 24 GB 独立显存。8 GB 也不能保证所有大模型都能运行。

从浏览器上传图片到容器模型推理再返回结果的流程

8. rembg GPU 抠图部署

项目:danielgatis/rembg。支持单图、批处理、HTTP 服务与 Docker。模型分离前景和背景,输出透明 PNG。

以下命令针对本次仓库版本;Dockerfile、默认模型和依赖可能更新,复现时再次核对 README。需要固定实验时记录 Git commit、镜像摘要和模型版本,latest 不是固定版本。

8.1 验证 GPU 通路

Docker Desktop 开启后,在 PowerShell 执行:

docker run --rm --gpus all ubuntu:22.04 nvidia-smi

看到 RTX 4060 表示容器能访问显卡。--rm 在测试结束后删除测试容器。

Windows Docker Desktop 使用 WSL 2 的 GPU 路线,先确认 Windows NVIDIA 驱动与 WSL 支持,不要直接照搬普通 Linux 主机的驱动安装步骤。此次构建不要求在 Windows 手动安装整套 CUDA Toolkit。

8.2 下载与构建

git clone https://github.com/danielgatis/rembg.git
cd rembg
docker build -t rembg-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu .

没有 Git 可以用 GitHub 的 Code → Download ZIP。进入含 Dockerfile 的目录再构建。

-t 给镜像命名,-f 指定 Dockerfile,. 指当前构建上下文。

本次实际 Dockerfile 使用 nvidia/cuda:13.0.1-cudnn-devel-ubuntu24.04,安装 .[gpu,cli],并执行 rembg d bria-rmbg 下载默认模型。构建输出 FINISHED 和 rembg-gpu:latest 表明镜像成功生成,不代表服务已启动或模型确实使用 GPU。

项目文档估计 GPU 镜像约 11 GB,版本、权重和缓存会影响实际占用,需要预留更多空间。

8.3 启动服务

docker run -d --name rembg --gpus all -p 127.0.0.1:7000:7000 rembg-gpu s --host 0.0.0.0 --port 7000
docker logs -f rembg

网页:http://localhost:7000;API 文档:http://localhost:7000/api。

7000 避开 IT-Tools 的 8080。容器内服务监听 0.0.0.0,主机发布端口仍限制本机。镜像入口为 rembg,后面的 s 是服务子命令。

本次先不挂载模型目录,直接使用构建时下载的模型;换模型可能额外下载。模型卷不是必需的,但对于运行后新增的缓存和模型有持久化价值。

名称已占用时先 docker ps -a 检查:配置正确则 docker start rembg;需要重建则先确认原容器没有重要数据。

8.4 验证效果与实际 GPU 推理

上传一张主体清楚的照片,下载透明 PNG,再测试复杂背景和毛发边缘。处理时另开 PowerShell:

nvidia-smi

结合显卡活动与服务日志判断 CUDA 是否正常加载。短任务不易捕捉,显存占用也不是全部计算在 GPU 上的充分证据。

进一步检查 ONNX Runtime 可用后端:

docker exec rembg python -c "import onnxruntime as ort; print(ort.get_available_providers())"

出现 CUDAExecutionProvider 表示后端可用,还需结合实际推理会话确认使用情况。--gpus all 只开放 GPU 访问,不能把 CPU 镜像自动变成 GPU 镜像。

本次记录确认到镜像构建成功;网页抠图效果与实际 GPU 推理尚待验证。

9. Docker Hub 超时排错

第一次构建在基础镜像读取阶段失败,报错包括 failed to fetch anonymous token、auth.docker.io/token 和 443 端口连接超时。这是镜像下载链路问题,不是显卡不支持。

报错使用了 IPv6 地址,但不能只凭这一点断定根因是 IPv6。

docker pull nvidia/cuda:13.0.1-cudnn-devel-ubuntu24.04

先单独拉取同一基础镜像,成功后重试构建。仍失败则检查 Docker Desktop 的代理设置(通常 Settings → Resources → Proxies,菜单随版本变化),或换网络测试。浏览器能访问 GitHub,不代表 Docker 引擎代理已配置正确。

不要因为下载超时直接修改 CUDA 版本或重装 Docker,避免引入新的兼容性问题。

10. 排错速查

现象检查方向
引擎未运行WSL、虚拟机平台、系统重启与引擎日志
镜像下载超时网络、代理、仓库认证服务
名称冲突docker ps -a,启动已有容器或确认后重建
端口占用旧容器或主机程序,换主机端口
浏览器显示错误页面URL、实际端口服务、缓存
容器启动即退出docker logs,启动参数与依赖
CUDA/cuDNN 错误驱动、镜像依赖、实际推理后端
模型下载失败下载站点、模型路径、磁盘空间

服务停止后用 start 恢复,不必重复构建。清理实验应只删除确认不需要的容器、镜像与卷,避免误删数据库或模型数据。

11. 参考资料