跳到主要内容

保持更新

代理不会自动更新。 你安装的版本会一直运行,直到你替换它为止。更新就是 拉取镜像加重建容器,大约需要一分钟。

使用同一个密码

重建容器会复用 neurogrid-data volume 里保存的 token,而那个 token 是用 你的密码加密的。换一个密码就无法读取它,机器就需要用新 token 重新注册。

更新​

docker pull ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest

docker stop neurogrid-agent
docker rm neurogrid-agent

docker run -d --name neurogrid-agent \
--gpus all --restart unless-stopped \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
--dns 1.1.1.1 --dns 8.8.8.8 \
-v neurogrid-data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/neurogrid/workloads:/var/lib/neurogrid/workloads \
-e AGENT_ENCRYPTION_PASSWORD="$AGENT_ENCRYPTION_PASSWORD" \
ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest

这次不需要 --token。已保存的那个仍然在那里。

用 Compose 会更简单:

docker compose pull
docker compose up -d

趁空闲的时候做​

重建容器会杀死它正在运行的任何任务,而一个中途死掉的任务会算作一次失败, 记在你的账户上。先检查一下:

docker ps --filter "name=neurogrid-job" --format '{{.Names}}'

没有输出说明当前没有任务在跑,你可以放心更新。如果有任务正在运行,要么等 它完成,要么在控制台暂停上架,等任务清空后再更新。

我现在用的是哪个版本​

docker inspect neurogrid-agent --format '{{.Config.Image}}'
docker images --digests | grep neurogrid-agent

:latest 本身说明不了太多——把 digest 和 软件包页面 比较一下,看是否有更新的构建版本。

要不要自动更新​

可以用像 Watchtower 这样的工具,但先想 清楚这个取舍:一次无人值守的更新如果恰好落在任务进行中,会直接杀死那个任 务。如果你确实要自动化,把它限制在代理容器上,并安排在你的显卡通常空闲的 时间段执行。

清理旧镜像​

每次更新都会把之前的镜像留下来。它们不大(约 250 MB),但会越积越多:

docker image prune -f

这只会删除没有标签的镜像。它不会动 vLLM 引擎镜像(约 20 GB)或你的 Hugging Face 模型缓存,你也不希望它这么做——正是这些东西让下一个任务能够 快速启动。