在 GPU 机型 GN7 上使用 Docker 容器部署 Stable Diffusion 是一个常见的 AI 图像生成应用场景。下面我将为你详细说明如何操作。
🧠 一、什么是 GN7 实例?
GN7 实例是阿里云提供的基于 NVIDIA A10 GPU 的计算实例,适用于深度学习推理、图像生成等任务。它具备良好的性价比,非常适合运行如 Stable Diffusion 这类模型。
🐳 二、使用 Docker 部署 Stable Diffusion 的步骤
✅ 1. 准备工作
- 确保你的 GN7 实例已安装:
- Docker
- NVIDIA Container Toolkit(用于支持 GPU)
安装 Docker:
sudo apt update
sudo apt install docker.io -y
安装 NVIDIA Container Toolkit:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install -y nvidia-docker2
sudo systemctl restart docker
✅ 2. 获取 Stable Diffusion 的 Docker 镜像
你可以选择以下几种方式之一:
方法一:使用官方或社区镜像(推荐)
例如使用 Automatic1111 的 Web UI,这是目前最流行的 SD Web UI。
docker run --gpus all -p 7860:7860 ghcr.io/guoyww/standalone-sd-webui:latest
这个镜像已经包含了 Stable Diffusion 模型和 Web UI,并且适配了大多数 GPU 环境。
默认访问地址:
http://<your-gn7-ip>:7860
方法二:构建自己的镜像(高级)
你也可以从源码构建镜像,比如克隆 Automatic1111 的仓库并自定义:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
docker build -t sd-webui .
docker run --gpus all -p 7860:7860 sd-webui
✅ 3. 挂载本地目录(可选)
如果你想持久化模型、输出图片或配置文件,可以挂载本地目录:
docker run --gpus all -p 7860:7860
-v /your/local/models:/workspace/models
-v /your/local/output:/workspace/outputs
ghcr.io/guoyww/standalone-sd-webui:latest
📦 三、常用 Stable Diffusion Docker 镜像推荐
| 镜像地址 | 描述 |
|---|---|
ghcr.io/guoyww/standalone-sd-webui:latest |
包含完整 WebUI 和依赖的轻量镜像 |
docker pull deepset/sentence-transformers-stsb-xlm-r-multilingual |
多语言支持版本 |
ghcr.io/one衍/stable-diffusion-webui:latest |
中文优化版 |
public.ecr.aws/p9e4w4o5/stable-diffusion-webui:latest |
AWS ECR 提供的镜像 |
🔐 四、安全建议
- 使用 HTTPS 反向X_X(如 Nginx + SSL)
- 设置用户名密码访问保护
- 不要暴露敏感端口到公网,仅限内网或 VPC 内访问
🧪 五、测试运行
打开浏览器访问:
http://<你的GN7公网IP>:7860
你应该看到 Stable Diffusion 的 Web UI 页面,可以开始输入提示词生成图像。
❓常见问题
Q1:启动时报错 no CUDA-capable device is detected
A:检查是否正确安装了 NVIDIA 驱动和 nvidia-docker,运行以下命令确认:
nvidia-smi
docker run --rm --gpus all nvidia/cuda:11.8.0-base nvidia-smi
Q2:内存不足或显存溢出怎么办?
A:尝试降低采样步数(Steps)、分辨率(Width/Height)或切换为 fp16 模式。
✅ 总结
| 步骤 | 内容 |
|---|---|
| 1 | 在 GN7 上安装 Docker 和 NVIDIA Toolkit |
| 2 | 拉取合适的 Stable Diffusion Docker 镜像 |
| 3 | 启动容器并映射端口和数据卷 |
| 4 | 浏览器访问 Web UI,开始生成图像 |
如果你需要我帮你写一个完整的 Docker Compose 文件或者定制镜像,也可以告诉我你的具体需求 😄
是否需要我为你提供一份 docker-compose.yml 示例?
云计算导航