Article

解决 ComfyUI-Manager 提示 ComfyUI outdated、插件无法安装的问题,并将 Docker 中的 ComfyUI 手动升级到最新版。

2026/7/15#ComfyUI#Docker#Ubuntu#AI#教程

Docker 手动升级 ComfyUI 到最新版

问题背景

最近安装 rgthree-comfy 等插件时,ComfyUI-Manager 提示:

[Security Alert]
ComfyUI outdated. Installations blocked (update allowed).

或者

This action is not allowed with this security level configuration.

Manager 版本:

Manager V3.41

ComfyUI 版本:

v0.2.2

虽然 Docker 镜像使用的是

image: ghcr.io/ai-dock/comfyui:latest-cuda

但是实际上镜像内部自带的 ComfyUI 仍然停留在 v0.2.2

而新版 Manager 已经禁止旧版本安装任何插件,因此必须升级 ComfyUI。


一、确认当前版本

进入容器

docker exec -it comfyui bash

进入 ComfyUI

cd /opt/ComfyUI

查看版本

git describe --tags --always
git log -1 --oneline

例如:

v0.2.2
0c7c98a (HEAD, tag: v0.2.2)

说明当前运行的是旧版。


二、查看是否为 Git 仓库

git status
git remote -v

如果看到

origin https://github.com/comfyanonymous/ComfyUI

说明可以直接升级。


三、拉取最新 Tag

git fetch origin --tags --prune

查看最新版本

LATEST_TAG=$(git tag --sort=-version:refname | head -1)

echo $LATEST_TAG

例如:

v0.28.0

四、为什么不能直接 checkout

第一次执行

git checkout v0.28.0

出现

error: Your local changes to the following files would be overwritten by checkout

原因:

Docker 中

custom_nodes

目录已经被挂载到了宿主机

里面存在:

example_node.py.example
websocket_image_save.py

Git 认为这是本地修改。

安装 Manager 后,旧版 ComfyUI 的兼容性和安全问题被检测出来。真正导致自动更新失败的原因,是 Docker 对整个 custom_nodes 目录的挂载覆盖了 ComfyUI 仓库中的受控文件,使 Git 工作区出现本地修改,最终阻止了自动更新脚本切换到新版本。


五、恢复 Git 工作区

执行:

git reset --hard

如果还有未跟踪文件

git clean -fd

然后再次

git checkout --detach v0.28.0

即可成功切换。


六、宿主机升级遇到 Permission denied

后来为了把整个 ComfyUI 放到宿主机管理

先复制:

docker cp comfyui:/opt/ComfyUI/. ~/ai/data/comfyui/app/

之后在宿主机执行

git checkout

提示:

unable to unlink
Permission denied

原因:

Docker 拷贝出来的文件属于 root。

解决:

sudo chown -R $(id -u):$(id -g) ~/ai/data/comfyui/app

然后重新

git checkout --detach v0.28.0

即可。


七、安装新版依赖

使用容器中的 Python

/opt/environments/python/comfyui/bin/python \
    -m pip install -r /opt/ComfyUI/requirements.txt

注意:

不要直接使用

python

因为 ai-dock 镜像默认没有加入 PATH。


八、重启容器

docker restart comfyui

查看版本

docker exec -it comfyui bash

cd /opt/ComfyUI

git describe --tags --always

应该看到:

v0.28.0

升级完成。


九、为什么 AUTO_UPDATE 没有效

Compose 中已经配置:

AUTO_UPDATE=true

但是实际上没有更新。

原因分析:

AI-Dock 内部启动脚本:

/opt/ai-dock/bin/update-comfyui.sh

执行流程:

git fetch
git checkout
git pull

由于:

custom_nodes/example_node.py.example

存在本地修改,

导致

git checkout

失败,

随后

git pull

又因为 Detached HEAD 失败,

最终自动升级中断。

所以 AUTO_UPDATE 并不是失效,而是 Git 工作区不干净导致升级失败


十、推荐目录结构

建议把 ComfyUI 核心代码也持久化:

volumes:
  - ~/ai/data/comfyui/app:/opt/ComfyUI

  - ~/ai/models/comfyui:/opt/ComfyUI/models

  - ~/ai/data/comfyui/custom_nodes:/opt/ComfyUI/custom_nodes

  - ~/ai/output/comfyui:/opt/ComfyUI/output

以后升级只需要:

cd ~/ai/data/comfyui/app

git fetch origin --tags

git checkout --detach $(git tag --sort=-version:refname | head -1)

docker restart comfyui

无需重新创建容器。


总结

本次升级踩到的坑主要有:

  • Docker 镜像是最新,但 ComfyUI 核心版本并不是最新。
  • Manager 新版本会阻止旧版 ComfyUI 安装插件。
  • AUTO_UPDATE=true 依赖 Git 工作区干净,否则会自动失败。
  • custom_nodes 挂载目录中的示例文件会导致 Git 无法切换版本。
  • 从 Docker 拷贝出来的仓库默认属于 root,需要重新修改文件权限。
  • 建议将 ComfyUI 核心目录也挂载到宿主机,方便长期维护和升级。

升级完成后,Manager 不再提示 ComfyUI outdated,插件(如 rgthree-comfyImpact Pack 等)即可正常安装。