-
初次启动时,启动脚本会下载 ComfyUI、ComfyUI-Manager 以及一些常用的功能性模型。
-
整个 ComfyUI 会保存在本地 (
./storage/ComfyUI
) 。 -
如果你已经有了现成的 ComfyUI 包,放在上述目录,并新建一个空白文件 (
./storage/.download-complete
),启动脚本会跳过下载。 -
使用 ComfyUI-Manager 即可更新组件、安装模型(在 ComfyUI 页面中找到“Manager”)。
-
NVIDIA 显卡, ≥6GB 显存
-
安装好最新的 NVIDIA 显卡驱动
-
游戏驱动或 Studio 驱动均可。
-
只需要在宿主系统中安装驱动即可,容器中不需要再安装驱动。
-
-
安装好 Docker
-
Linux 用户可能需要安装 NVIDIA Container Toolkit (使得容器可以访问宿主机的 GPU)。
-
Windows 用户建议使用 Docker Desktop 并在安装时启用 WSL2,并 限制内存用量 。
-
下载过程可能需要科学上网,在 Docker 设置中可以找到代理设置。
-
docker compose
git clone https://github.com/YanWenKun/ComfyUI-Docker.git
cd ComfyUI-Docker
docker compose up --detach
# 更新镜像(仅在 Python 组件版本过期时需要)
git pull
docker compose pull
docker compose up --detach --remove-orphans
docker image prune
docker run
mkdir -p storage
docker run -it \
--name comfyui \
--gpus all \
-p 8188:8188 \
-v "$(pwd)"/storage:/home/runner \
--env CLI_ARGS="" \
yanwk/comfyui-boot:latest
# 更新镜像(仅在 Python 组件版本过期时需要)
docker rm comfyui
docker pull yanwk/comfyui-boot:latest
# 接下来再运行一遍上述 'docker run' 即可
启动完成后,访问 http://localhost:8188/
Note
|
推荐 AMD 用户使用 Win11 + ZLUDA 方式运行,安装 AMD HIP SDK 并使用常见整合包运行即可(不要开启 xFormers),初次运行会花 15 分钟左右来编译代码,之后就和 CUDA 体验差不多了。不推荐缺乏经验的用户折腾 Linux 下的 ROCm。 |
Note
|
WSL2 + AMD/Intel GPU 可以考虑: 在 WSL2 环境下通过 DirectML 运行 ComfyUI。 |
Note
|
Linux 宿主机需要安装 Radeon software for Linux with ROCm 以让 Docker 支持 GPU,各发行版可能安装方式不同。 |
docker compose
git clone https://github.com/YanWenKun/ComfyUI-Docker.git
cd ComfyUI-Docker
docker compose -f docker-compose-rocm.yml up --detach
# 更新镜像(仅在 Python 组件版本过期时需要)
git pull
docker compose -f docker-compose-rocm.yml pull
docker compose -f docker-compose-rocm.yml up --detach --remove-orphans
docker image prune
docker run
(root 身份)mkdir -p storage
docker run -it --rm \
--name comfyui-root \
--device=/dev/kfd --device=/dev/dri \
--group-add=video --ipc=host --cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--security-opt label=disable \
-p 8188:8188 \
--env CLI_ARGS="--use-pytorch-cross-attention" \
--user root --workdir /root \
-v "$(pwd)"/storage:/root \
yanwk/comfyui-boot:rocm \
/bin/bash /home/scripts/root-wrapper.sh
启动完成后,访问 http://localhost:8188/
Q: 显存只有 4G 怎么办?
A: 在启动参数 CLI_ARGS
中添加 --lowvram
。
Q: 用了 --lowvram
还是显存不够
A: 参数换成 --novram
(直接用 CPU 内存)。
Q: 能不能直接用 CPU 来跑?
A: 在启动参数 CLI_ARGS
中添加 --cpu
,会很慢。
Q: 我不想用 xFormers,如何使用 PyTorch 原生交叉注意力机制?
A: 在启动参数 CLI_ARGS
中添加 --use-pytorch-cross-attention
。在 WSL2 上可能速度/显存占用表现更佳,但在 Linux 宿主机上会明显更慢。
更多 CLI_ARGS
参考
ComfyUI 。
docker build . --progress=plain -f Dockerfile -t yanwk/comfyui-boot:latest
docker run -it --rm \
--gpus all -p 8188:8188 \
--volume "$(pwd)"/storage:/home/runner \
--env CLI_ARGS="" \
yanwk/comfyui-boot:latest
docker run -it --rm \
--gpus all -p 8188:8188 \
--volume "$(pwd)"/storage:/home/runner \
--env CLI_ARGS="" \
--user root \
yanwk/comfyui-boot:latest /bin/bash
Podman 默认是 root-less 的,不需要 sudo,这也给挂载目录
带来了限制 。
Podman 默认挂载文件为 root 身份,而想要在容器内挂载为非 root 用户,Podman 提供的
选项
则会对主机上的文件执行 chown
,变成和容器内一样的 uid 和 gid,给文件管理带来混乱。
这里推荐两种不同的方式绕过:
展开细节
简单直接的方式,用 sudo
来运行 Podman 就是 rootful 了,使用体验基本和 Docker 一样,就是记得后续操作也要用 "sudo"。
此外镜像文件也是下载到 root 用户名下。如果已经用当前 Linux 用户下载了镜像,可以本地复制:
sudo podman image scp username@localhost::docker.io/yanwk/comfyui-boot:latest
mkdir -p storage
sudo podman run -it --rm \
--name comfyui-rootful \
--device nvidia.com/gpu=all \
--security-opt label=disable \
-p 8188:8188 \
-v "$(pwd)"/storage:/home/runner \
-e CLI_ARGS="" \
docker.io/yanwk/comfyui-boot
展开细节
保持 rootless 风格,不需要 sudo。容器内文件挂载为 root,程序也以 root 执行。而在宿主机一侧看来,文件还是本来的用户所有权。
mkdir -p storage
podman run -it --rm \
--name comfyui-rootless \
--device nvidia.com/gpu=all \
--security-opt label=disable \
-p 8188:8188 \
-v "$(pwd)"/storage:/root \
--user root \
--workdir /root \
-e CLI_ARGS="" \
docker.io/yanwk/comfyui-boot:latest \
/bin/bash /home/scripts/root-wrapper.sh
如果在升级时遇到奇怪问题,可以尝试清理缓存文件。平时不需要清理,避免反复下载一些文件(尤其一些节点用 huggingface_hub
下载模型,会存在 .cache
中)。
docker exec -it --workdir /home/runner comfyui \
rm -rf .cache/ .config/ .local/ .nv/ bin/ include/ lib/ lib64 pyvenv.cfg
docker restart comfyui
以下命令会安装一些常用节点,也许能帮你节省点时间
镜像里已经安装好了绝大部分依赖项,不需要手动安装。
(除了 imageio-ffmpeg,
该包使用 FFmpeg4,而镜像里安装了 FFmpeg6 或更新版本)
cd ComfyUI/custom_nodes/
gcs='git clone --depth=1 --no-tags --recurse-submodules --shallow-submodules'
$gcs https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation.git
$gcs https://github.com/bash-j/mikey_nodes.git
$gcs https://github.com/chrisgoringe/cg-use-everywhere.git
$gcs https://github.com/11cafe/comfyui-workspace-manager.git
$gcs https://github.com/crystian/ComfyUI-Crystools.git
$gcs https://github.com/cubiq/ComfyUI_essentials.git
$gcs https://github.com/cubiq/ComfyUI_InstantID.git
$gcs https://github.com/cubiq/ComfyUI_IPAdapter_plus.git
$gcs https://github.com/Fannovel16/comfyui_controlnet_aux.git
$gcs https://github.com/Fannovel16/ComfyUI-Frame-Interpolation.git
$gcs https://github.com/FizzleDorf/ComfyUI_FizzNodes.git
$gcs https://github.com/florestefano1975/comfyui-portrait-master.git
$gcs https://github.com/Gourieff/comfyui-reactor-node.git
$gcs https://github.com/huchenlei/ComfyUI-layerdiffuse.git
$gcs https://github.com/jags111/efficiency-nodes-comfyui.git
$gcs https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet.git
$gcs https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git
$gcs https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
$gcs https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
$gcs https://github.com/ltdrdata/ComfyUI-Inspire-Pack.git
$gcs https://github.com/mcmonkeyprojects/sd-dynamic-thresholding.git
$gcs https://github.com/pythongosssss/ComfyUI-Custom-Scripts.git
$gcs https://github.com/pythongosssss/ComfyUI-WD14-Tagger.git
$gcs https://github.com/rgthree/rgthree-comfy.git
$gcs https://github.com/shiimizu/ComfyUI_smZNodes.git
$gcs https://github.com/SLAPaper/ComfyUI-Image-Selector.git
$gcs https://github.com/twri/sdxl_prompt_styler.git
此外,本镜像并未提供
WAS Node Suite
所需依赖项,因为其部分
版本固定,
而且已不再活跃开发。
但是通过 ComfyUI-Manager 正常安装不受影响,本镜像的脚本只安装 ComfyUI-Manager 这一个自定义节点。在全新部署的情况下,使用 ComfyUI-Manager 安装 WAS NS 不会有版本冲突。
如果不同节点间出现冲突,尝试在 custom_nodes
下删除对应节点,并删除 .local
(或 local
)目录,然后在 ComfyUI-Manager 中更新/尝试修复/重新安装对应节点。
如果需要在 ComfyUI 启动前执行脚本,可以创建这个文件:
./storage/scripts/pre-start.sh
如果你需要单独设置代理,可以创建这个文件,它会在 pre-start
和 download
之前运行:
./storage/scripts/set-proxy.sh
参考文本:
export HTTP_PROXY=http://host.docker.internal:1081
export HTTPS_PROXY=$HTTP_PROXY
export http_proxy=$HTTP_PROXY
export https_proxy=$HTTP_PROXY
export NO_PROXY="localhost,*.local,*.internal,[::1],fd00::/7,
10.0.0.0/8,127.0.0.0/8,169.254.0.0/16,172.16.0.0/12,192.168.0.0/16,
10.*,127.*,169.254.*,172.16.*,172.17.*,172.18.*,172.19.*,172.20.*,
172.21.*,172.22.*,172.23.*,172.24.*,172.25.*,172.26.*,172.27.*,
172.28.*,172.29.*,172.30.*,172.31.*,172.32.*,192.168.*,
*.cn,ghproxy.com,*.ghproxy.com,ghproxy.org,*.ghproxy.org,
gh-proxy.com,*.gh-proxy.com,ghproxy.net,*.ghproxy.net"
export no_proxy=$NO_PROXY
echo "[INFO] Proxy set to $HTTP_PROXY"
代码使用 木兰公共许可证, 第2版 。 中英双语哦!