1. Docker 与核心概念
Docker 用于构建、分发和运行应用。它把程序及其用户空间依赖打包成镜像,再创建容器运行,减少手工安装与版本冲突。镜像不是跨所有系统和硬件通用的,操作系统、CPU 架构仍需匹配。
| 概念 | 含义 |
|---|---|
| 镜像 Image | 应用、依赖和默认启动配置的模板 |
| 容器 Container | 从镜像创建的实例,具有运行状态和可写文件层 |
| Registry | 镜像存储与分发服务,如 Docker Hub |
| Dockerfile | 描述镜像构建步骤的文件 |
| Docker Compose | 用 YAML 配置多个服务、网络、环境变量和挂载 |
| Volume | Docker 管理的持久化存储 |
| Bind mount | 把电脑上的指定目录映射到容器中 |
同一镜像可以创建多个容器。容器通常共享所在环境的内核,不是每个容器都启动完整操作系统。Windows 上的 Linux 容器由 WSL 2 提供 Linux 环境。
常见用途:快速体验软件、统一团队开发环境、部署网站、运行数据库、自动化测试,以及部署深度学习训练或推理环境。
2. Windows 安装与配置:一步一步操作
本次在 Windows 上安装 Docker Desktop,使用 WSL 2 后端运行 Linux 容器。开始前可查看 Docker Desktop Windows 官方安装说明与系统要求,确认 Windows 版本、WSL 和硬件虚拟化支持。
2.1 查看处理器架构,决定下载哪个版本
- 按 Win + I 打开 Windows“设置”。
- 进入 系统 → 系统信息(关于),通常在系统页面最下方,不同 Windows 版本名称略有区别。
- 在 设备规格 中找到 系统类型,查看处理器架构。
| 系统类型显示的内容 | 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
- 打开 Docker Desktop 官方下载页。
- 点击 Download Docker Desktop,在平台菜单中选择上一步确认的 Windows – AMD64 或 Windows – ARM64。
- 等安装程序下载完成。不要选择 Mac 或 Linux 版本。
- 双击下载的安装程序。如果 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
- 从桌面快捷方式或开始菜单打开 Docker Desktop。
- 首次启动如出现服务协议,阅读后按自己的使用情况接受并继续;许可适用范围见 Docker Desktop 订阅服务说明。
- 个人运行本地容器通常无需先登录 Docker 账号;如出现引导,可按界面提供的跳过入口继续。
- 等待引擎启动。界面底部应显示引擎正在运行(例如 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 组件没有开启。本次按以下步骤处理:
- 按上一节的方法打开 管理员 PowerShell。
- 复制下面这一整行命令,粘贴并按回车:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart
- 等待执行成功,保存正在编辑的文件。
- 从 Windows 开始菜单选择 电源 → 重启。命令中的
-NoRestart表示不自动重启,因此需要自己操作;仅关闭并重开 Docker 不够。 - 重启后再次打开 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 个区域;图中的编号与下文对应。不同版本的菜单和图标可能略有变化。
3.1 ① 顶部工具栏与 ② 左侧导航
① 顶部工具栏提供全局入口。Search 是全局搜索,可查找容器、镜像等资源,图中快捷键为 Ctrl+K。问号打开帮助,铃铛查看通知,齿轮进入 Settings,其余图标提供学习、诊断或应用功能入口,具体以悬停提示为准。网络代理、启动选项和 WSL 集成等配置都从 Settings 查找。Sign in 登录 Docker 账号,用于访问账号关联的 Docker Hub 仓库等功能;个人本地容器通常可以在未登录时运行。
左上角的 docker desktop 是软件标识,PERSONAL 表示订阅方案,不是当前容器的状态。最右侧的最小化、最大化和关闭按钮是 Windows 窗口控件。
② 左侧导航决定主区域显示哪一类对象。图中高亮的 Containers 表示当前正在查看容器。
| 菜单 | 用来做什么 | 本笔记中的使用场景 |
|---|---|---|
| Gordon | Docker 的 AI 助手,辅助解释命令和诊断问题 | 需要帮助理解报错时使用,建议核对其回答 |
| Containers | 查看已创建的容器、运行状态、日志和操作入口 | 启动或停止 it-tools、rembg |
| Images | 查看和管理本地镜像,也可从镜像创建容器 | 确认 rembg-gpu 是否构建成功 |
| Logs | 集中查看容器日志 | 查找启动失败、模型下载或服务报错信息 |
| Volumes | 管理 Docker 保存的持久化数据卷 | 查看数据库、模型缓存等数据卷 |
| Kubernetes | 管理启用后的 Kubernetes 环境和资源 | 学习单个容器时暂时用不到 |
| Builds | 查看镜像构建记录、步骤和构建日志 | 排查 Dockerfile 构建失败的位置 |
| Models | Docker 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 恢复,不必重复构建。清理实验应只删除确认不需要的容器、镜像与卷,避免误删数据库或模型数据。