kohya_ss Docker部署完整教程:如何快速搭建跨平台Stable Diffusion训练环境
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
配置Stable Diffusion训练环境,通常要折腾Python版本、CUDA依赖和一堆版本冲突。kohya_ss是支持LoRA、DreamBooth、微调的GUI训练工具,本文用Docker把整套环境打包成镜像:在有NVIDIA显卡的机器上,3条命令就能打开可用的训练界面,全程不碰Python环境。
🐳 为什么值得这样部署
传统本地安装要做的事是:装Python 3.11、下载数GB的torch和CUDA依赖、克隆sd-scripts训练核心,再逐个解决版本冲突。Docker把这些全部装进一个镜像里,差别体现在这几点:
- 跨平台一致:Windows、Linux、macOS(经WSL2)上拿到同一套运行环境,不再有"我电脑上是好的"
- 环境隔离:Python、CUDA、依赖全在镜像里,不碰系统包,删容器即可彻底清理
- 更新成本低:
docker compose up -d --pull always拉新镜像重启即可 - 数据不落容器:训练数据和模型都在宿主机目录,容器可随时销毁重建
- TensorBoard自带:独立容器在6006端口看训练曲线,不用另装
官方Docker安装细节可在 docs/installation_docker.md 交叉核对。
📋 准备工作清单
Windows
- 安装Docker Desktop,确认启用WSL2后端——容器运行时的基础
- 安装最新NVIDIA Windows驱动——宿主机GPU加速的入口
- 安装CUDA Toolkit——WSL2 + Docker的GPU链路需要它在宿主机一侧
Linux / macOS
- 安装Docker Engine和docker compose插件——容器运行时
- 安装NVIDIA GPU驱动(已装可跳过)
- 安装NVIDIA Container Toolkit——让容器能看见GPU,缺了它 compose 里的
--gpus配置不会生效
装完后在宿主机跑一次nvidia-smi,能输出显卡型号和驱动版本即说明宿主机就绪。
🚀 部署执行:3条命令启动
推荐最短路径:使用预构建镜像
# 克隆仓库(必须加 --recursive,否则缺少训练核心sd-scripts子模块,构建会失败) git clone --recursive https://gitcode.com/GitHub_Trending/ko/kohya_ss # 进入项目目录 cd kohya_ss # 后台启动容器(首次会下载预构建镜像ghcr.io/bmaltais/kohya-ss-gui:latest,体积数GB,等待时间取决于带宽) docker compose up -ddocker-compose.yaml 会同时拉起两个服务:kohya-ss-gui(训练界面,7860端口)和tensorboard(训练曲线,6006端口)。
替代方案:本地构建镜像
需要自定义依赖或离线部署时,从本地代码构建:
# 克隆仓库(同样必须 --recursive) git clone --recursive https://gitcode.com/GitHub_Trending/ko/kohya_ss # 进入项目目录 cd kohya_ss # 本地构建镜像并启动(需下载PyTorch等依赖并逐层编译,预期最长约20分钟) docker compose up -d --build目录结构:数据放哪里
容器被刻意设计成"可丢弃"的,数据全部留在宿主机:
kohya_ss/ ├── dataset/ # 训练数据(容器内挂载为 /dataset,图片和文本标注都放这里) ├── models/ # 预训练模型与训练产出的模型文件 └── .cache/ # 配置与缓存目录(保证设置持久化)kohya_ss 训练产出的Stable Diffusion图像示例:

注意一个设计点:GUI在容器内以--headless模式运行(见 Dockerfile 的CMD),没有文件选择器,目录路径需要手动输入,所以开始训练前先确认数据放在dataset/下。
✅ 部署后验证
依次做三件事,全部通过就可以开始训练:
# 检查两个容器都是Up状态(应看到 kohya-ss-gui 和 tensorboard) docker compose ps # 确认容器内能看到GPU(输出显卡型号和显存即为正常) docker exec -it kohya-ss-gui nvidia-smi- 浏览器打开
http://localhost:7860,能看到 kohya_ss 的 Gradio 界面(Train Network 等标签页)即GUI正常;跑一次训练产生日志后,http://localhost:6006能看到TensorBoard曲线。
🔧 关键配置改法
最常想改的是端口、GPU、TensorBoard端口,改动点都在 docker-compose.yaml。
一行命令改GUI端口
7860被占用时,只改宿主机侧端口:
ports: - "7861:7860" # 宿主机7861映射到容器7860,浏览器访问 http://localhost:7861只用指定GPU
多卡机器想锁定某一张卡时:
- driver: nvidia capabilities: [gpu] device_ids: ["0"] # 默认 "all",改成卡号即只分配该卡改TensorBoard端口
在项目目录创建或编辑.env文件:
TENSORBOARD_PORT=6007 # TensorBoard将监听 http://localhost:6007🛠️ 日常维护:常用命令清单
docker compose ps # 查看容器状态 docker compose logs -f kohya-ss-gui # 实时跟踪训练日志 docker compose stop kohya-ss-gui # 只停GUI,保留TensorBoard docker compose down # 停止并移除容器(宿主机数据保留) docker compose up -d --pull always # 拉取最新预构建镜像并重启(日常更新) docker exec -it kohya-ss-gui bash # 进入容器内部查看文件🩺 遇到卡点时
- 容器内
nvidia-smi报错或找不到GPU:NVIDIA Container Toolkit 没装或装完没重启Docker。装好Toolkit后执行systemctl restart docker,再用docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu nvidia-smi单独验证;能打印GPU信息说明宿主机链路正常,问题出在容器配置。 - 本地构建失败,提示找不到 sd-scripts:训练子模块没拉下来。在项目目录执行
git submodule update --init --recursive,然后重新docker compose up -d --build。 - 训练启动不了,日志报路径不存在:headless模式没有文件选择器,路径必须手填,且数据必须放在宿主机
dataset/下(容器内对应/dataset)。把图片和标注txt放进dataset/,在GUI中手填/dataset/你的文件夹名。 - 7860端口被占用:把 docker-compose.yaml 里的映射改成
7861:7860,然后docker compose down && docker compose up -d重启。 - 容器启动后立即退出或报权限错误:容器以UID 1000运行。宿主机
dataset/、models/目录若对该用户无读写权限,容器会直接退出。宿主机执行ls -ld dataset models检查属主,把目录属主调整为对应UID,或用--build-arg UID=<你的UID>重建镜像。
📊 与其他方案对比
| 方案 | 上手难度 | 隔离性 | 更新成本 | 适用场景 |
|---|---|---|---|---|
| Docker部署(本文) | 低,3条命令 | 高,整套环境在镜像里 | 低,拉镜像或重建 | 本地有GPU、长期训练 |
| 本地 pip/uv 安装 | 高,要自己管Python和依赖 | 无,直接使用系统环境 | 中,git pull并重装依赖 | 需要调试、修改代码的开发者 |
| Colab/Runpod 云端 | 极低,浏览器打开即用 | 高,平台托管 | 极低,平台自动处理 | 本地无GPU、只想快速试用 |
🎯 收尾行动清单
- 克隆仓库:
git clone --recursive https://gitcode.com/GitHub_Trending/ko/kohya_ss - 启动服务:
cd kohya_ss && docker compose up -d - 打开
http://localhost:7860确认GUI,docker exec -it kohya-ss-gui nvidia-smi确认GPU - 把训练图片放进
dataset/,在 Train Network 标签页发起第一次LoRA训练
训练参数怎么调,照着 docs/LoRA/top_level.md 和 docs/train_README.md 走。环境搭好后,剩下的就是选模型、调参数——去跑你的第一个LoRA吧。
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考