1. 项目概述
最近在Ubuntu 24.04 LTS上折腾ComfyUI的Docker部署,发现网上资料比较零散。作为长期使用Ubuntu和Docker的老用户,我整理了一套完整的搭建流程,包含从系统准备到模型加载的全过程。这个方案特别适合需要快速搭建稳定AI绘画环境的开发者,也适用于想要隔离不同AI工具依赖关系的技术爱好者。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备
2.1 Ubuntu 24.04基础配置
新安装的Ubuntu 24.04需要先做几个基础配置:
- 更新软件源:
sudo apt update && sudo apt upgrade -y - 安装必要工具包:
sudo apt install -y curl wget git python3-pip - 配置SSH(可选但推荐):
sudo apt install -y openssh-server
注意:如果使用NVIDIA显卡,建议先安装官方驱动后再进行后续步骤,避免Docker无法识别显卡。
2.2 Docker安装与配置
Ubuntu 24.04的官方源已经包含较新的Docker版本,但为了获得最新特性,建议使用Docker官方源:
bash复制# 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后,将当前用户加入docker组避免频繁使用sudo:
bash复制sudo usermod -aG docker $USER
newgrp docker # 立即生效
验证安装:
bash复制docker run hello-world
3. ComfyUI容器部署
3.1 获取ComfyUI镜像
官方提供了多个版本的Docker镜像,推荐使用带CUDA支持的版本:
bash复制docker pull comfyanonymous/ComfyUI:latest
如果需要特定版本(如稳定版):
bash复制docker pull comfyanonymous/ComfyUI:stable
3.2 运行容器
基础运行命令:
bash复制docker run -d --name comfyui \
-p 8188:8188 \
--gpus all \
comfyanonymous/ComfyUI:latest
更推荐的带持久化配置的方式:
bash复制mkdir -p ~/comfyui/{models,output,config}
docker run -d --name comfyui \
-p 8188:8188 \
--gpus all \
-v ~/comfyui/models:/ComfyUI/models \
-v ~/comfyui/output:/ComfyUI/output \
-v ~/comfyui/config:/ComfyUI/config \
comfyanonymous/ComfyUI:latest
参数说明:
-p 8188:8188:将容器内端口映射到主机--gpus all:启用所有GPU支持-v参数实现了三个关键目录的持久化存储
4. 模型管理与配置
4.1 模型文件结构
ComfyUI的标准模型目录结构:
code复制models/
├── checkpoints/ # 主模型
├── loras/ # LoRA模型
├── vae/ # VAE模型
├── clip/ # CLIP模型
├── clip_vision/ # CLIP视觉模型
├── controlnet/ # ControlNet模型
├── diffusers/ # Diffusers模型
└── upscale_models/ # 超分模型
4.2 下载常用模型
以Stable Diffusion 1.5为例:
bash复制cd ~/comfyui/models/checkpoints
wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
下载ControlNet模型:
bash复制cd ~/comfyui/models/controlnet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth
提示:模型文件较大,建议使用
aria2c多线程下载加速
5. 高级配置与优化
5.1 性能调优
修改容器运行参数提升性能:
bash复制docker update comfyui \
--cpus 4 \ # 限制CPU核心数
--memory 16g \ # 限制内存
--memory-swap 32g \ # 设置交换内存
--restart unless-stopped # 自动重启
5.2 自定义节点安装
进入容器安装自定义节点:
bash复制docker exec -it comfyui bash
cd /ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
exit
然后重启容器使更改生效:
bash复制docker restart comfyui
6. 常见问题排查
6.1 GPU无法识别问题
如果遇到--gpus all报错,先验证NVIDIA容器工具包:
bash复制distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
6.2 端口冲突处理
如果8188端口被占用,可以修改映射端口:
bash复制docker run -d --name comfyui \
-p 8288:8188 \ # 将主机端口改为8288
--gpus all \
comfyanonymous/ComfyUI:latest
6.3 模型加载失败
检查模型文件:
- 确认模型文件已下载完整
- 检查文件权限:
chmod 644 ~/comfyui/models/*/* - 验证模型格式是否兼容(.ckpt或.safetensors)
7. 日常维护技巧
7.1 容器更新流程
- 停止并删除旧容器:
bash复制docker stop comfyui
docker rm comfyui
- 拉取最新镜像:
bash复制docker pull comfyanonymous/ComfyUI:latest
- 用原有配置重新运行容器(注意保持volume参数一致)
7.2 日志查看与调试
实时查看日志:
bash复制docker logs -f comfyui
过滤错误日志:
bash复制docker logs comfyui | grep -i error
7.3 资源监控
查看容器资源使用情况:
bash复制docker stats comfyui
设置资源限制(防止OOM):
bash复制docker update comfyui --memory 16g --memory-swap 32g
8. 备份与迁移
8.1 完整备份方案
创建备份压缩包:
bash复制tar -czvf comfyui_backup_$(date +%Y%m%d).tar.gz \
~/comfyui/models \
~/comfyui/config \
~/comfyui/output
8.2 迁移到新机器
- 在新机器上安装相同版本的Docker
- 复制备份文件并解压到相同路径
- 使用相同的
docker run命令启动容器
9. 进阶使用技巧
9.1 多容器并行
如果需要同时运行多个ComfyUI实例:
bash复制docker run -d --name comfyui_2 \
-p 8288:8188 \
--gpus all \
-v ~/comfyui_2/models:/ComfyUI/models \
comfyanonymous/ComfyUI:latest
9.2 自定义Dockerfile
创建自定义Dockerfile添加额外依赖:
dockerfile复制FROM comfyanonymous/ComfyUI:latest
RUN apt update && apt install -y \
libgl1-mesa-glx \
libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /ComfyUI
构建并运行:
bash复制docker build -t my_comfyui .
docker run -d --name custom_comfyui -p 8188:8188 --gpus all my_comfyui
10. 安全注意事项
-
不要将ComfyUI服务直接暴露在公网,建议使用:
- 本地访问
- SSH隧道
- 反向代理+认证
-
定期更新容器镜像:
bash复制docker pull comfyanonymous/ComfyUI:latest
- 敏感模型文件加密存储:
bash复制sudo apt install -y ecryptfs-utils
mkdir ~/secure_models
mount -t ecryptfs ~/comfyui/models ~/secure_models
