一句话
- 镜像只 bake 壳(terminal 0.1.49.2),真正的版本号是运行时的组合:terminal 壳+engine 挂载+pack 挂载,tag 上的 0.1.52 是组合版本号,不是 bake 版本。
四组件版本真相
| 组件 | 版本 | 落点 | bake 还是挂载 |
| terminal 壳 | 0.1.49.2 | Dockerfile 第 33 行 COPY | bake 进镜像 |
| engine 主 | 0.1.52 | strata.yml 第 30 行挂载 | 运行时挂载,镜像里只留空位 |
| dsv41 | 0.1.49.2 | strata.yml 第 32 行挂载 | 运行时挂载,槽位独立(engine-dsv41) |
| pack | gyro-m_strata-0.1.52 | strata.yml 第 29 行挂载 | 运行时挂载,ro,归模型旁 |
| 镜像 tag | llama-strata:0.1.52-v100 | strata.yml 第 10 行 | 只是个名字,不保证内容 |
构建
docker build -f build/dockerfiles/strata/Dockerfile build/ -t llama-strata:<tag>
- 底座:
ghcr.io/ggml-org/llama.cpp:server-cuda(与 llama-v100 同底座)。 - 上下文必须是
build/ 整目录,因为 COPY 源(packages/components-skel)与 Dockerfile 不在同一子目录。 - entrypoint:每次容器重建时重新落
settings.json(data_dir=/var/strata,installs=[\"/opt/strata/terminal\"]),HOME 在容器层,重建即回到镜像态。 - rootless:HOME 与 /opt/strata/terminal 归 1000,容器以
user 1000:1000 运行。
运行(strata.yml 挂载三行即全部版本定义)
image: llama-strata:0.1.52-v100 # 第 10 行:名义版本
# 第 29 行:pack(模型旁,ro)
- ../../data/models_sata/.../packs/gyro-m_strata-0.1.52:/var/strata/packs/gyro-m_strata-0.1.52:ro
# 第 30 行:主 engine 版本 pin(挂载路径即版本号)
- ../../build/packages/strata-engine-0.1.52-linux-x86_64-cuda-cuda12:/opt/strata/share/strata/components/engine/0.1.52-linux-x86_64-cuda-cuda12:ro
# 第 32 行:dsv41(另一槽位,不参与主引擎选择)
- ../../build/packages/strata-dsv41-0.1.49.2-linux-x86_64-cuda-cuda13:/opt/strata/terminal/engine-dsv41/strata-dsv41-0.1.49.2-linux-x86_64-cuda-cuda13:ro
- 引擎无版本号变量,靠"挂了哪个版本目录"决定;今天只挂 0.1.52 一个,无二义性。
- preset/engine 日志走命名卷
strata-state(第 28 行),prepare 重建,随时可清空。 - 跑法:.env 切 STRATA_INI →
docker compose -f strata.yml up -d(8080),与 llama.cpp 栈互斥。
三个坑(配置不动,只记录)
- tag 名不副实:
0.1.52-v100 看起来像 bake 版本,实际 bake 的 terminal 是 0.1.49.2;准确读法是"能跑 0.1.52 组合的壳"。 - Dockerfile 第 33 行写死
strata-terminal-0.1.49.2:升壳时两处必须一起改(包目录+COPY 行),光改 tag 会静默沿用旧壳。 - 升壳不需要等 terminal 包:terminal 就是 control 包(见 §terminal 包的来源),取新版
strata-control-<ver>-linux-x86_64.tar.gz 解到 build/packages/strata-terminal-<ver>/ 即可。
terminal 包的来源(2026-11-06 实锤)
- terminal 与 control 是同一个包:官方
install.sh 按 install-manifest.txt 里对应平台行的 strata-control-<ver>-<platform>.tar.gz 下载,解包到 terminal/<version>,再建 current 软链+PATH。 - 三处地址(同一 release 文件夹,即 feed 包的 base):
https://github.com/Niko1221/Strata/releases/latest/download/install.sh、…/install-manifest.txt、…/strata-control-<ver>-linux-x86_64.tar.gz。 - manifest 实测行:
linux-x86_64 0.1.57 strata-control-0.1.57-linux-x86_64.tar.gz 2ac78cff… 99944994——在用 0.1.49.2 就是 10 月下旬 manifest 指向的当时行。 - 结论:跟踪 feed 的
control.version 就是在跟踪 terminal 壳版本,不存在错位;换 terminal 也不用找新源,按 manifest 取 control 包即可。
文件索引
| 文件(本机镜像) | 行号 | 说了什么 |
| build/dockerfiles/strata/Dockerfile | 7~9 | 引擎不 bake,运行时挂载覆盖;升级=换包+build |
| 同上 | 33 | bake 的 terminal 版本(0.1.49.2) |
| device/v100/strata.yml | 10/29/30/32 | tag 名;pack;主 engine;dsv41 |
| build/packages/ | 目录名 | 有哪些版本包可用(engine-0.1.52/terminal-0.1.49.2/dsv41-0.1.49.2) |
| device/v100/v100-qwen3.8-125b-strata-256K.ini | 头注 1~50 行 | needle 基线对照+寻优结论(docker vs host 数据源) |