DeepSeek Harness 跑在 Docker 里:镜像选择、端口映射与插件数据持久化
DeepSeek Harness 跑在容器里,启动只是一半问题,另一半是重建后数据还在不在。 会话、插件与配置都在 DSH_HOME 下;不挂卷,重建一次就回到初始状态。
容器里最容易丢的三样
三样数据决定你重建后是否还要从头配。
| 数据 | 位置 | 丢了会怎样 |
|---|---|---|
| 会话 | DSH_HOME/sessions | 历史对话消失 |
| 插件与配置 | DSH_HOME 与 profile | 需要重新安装与配置 |
| 密钥与设置 | 配置目录 | 需要重新填模型与密钥 |
三样都在 DSH_HOME 体系下。 挂对一个目录,三样一起保留;只挂 sessions,插件配置仍会丢。
不要把数据放在容器内路径。 容器内路径随容器生命周期消失;挂载点必须指向宿主机目录或命名卷。
数据卷怎么挂
挂载是容器化的核心动作,顺序与路径都要对。
- 在宿主机准备一个目录,例如
~/dsh-data。 - 启动容器时把该目录挂到容器的 DSH_HOME。
- 设置环境变量,让 DSH 明确使用这个目录。
- 启动后确认目录里出现 sessions、config 等子目录。
- 重建容器时复用同一个挂载,数据即可恢复。
路径要一致。 环境变量指向 A,卷挂到 B,数据就会写到容器内临时路径;重建后看起来像「卷没生效」。
命名卷与绑定挂载都可以。 绑定挂载便于直接备份与查看;命名卷由 Docker 管理,迁移时要用导出命令。
首次启动先确认写入。 进容器看目录是否可写;权限不对时,DSH 可能启动成功但写不进数据。
端口与访问
端口映射决定谁能访问,安全边界在这里。
- 容器内服务监听一个端口,映射到宿主机端口。
- 优先映射到
127.0.0.1,只允许本机访问。 - 需要局域网访问时,再评估认证与来源限制。
- 公网访问必须加反向代理、TLS 与认证。
- 不要用
0.0.0.0图省事,暴露面会扩大。
端口映射不是认证。 能访问端口不等于有权限使用;认证要在服务或代理层做。
容器网络与宿主机不同。 宿主机 127.0.0.1 访问不到容器内部地址时,先看映射与监听地址,不要改服务配置乱试。
插件持久化
插件装进 profile,profile 在 DSH_HOME 下。 持久化的关键是「装对位置」。
- 确认插件安装在挂载目录对应的 profile 里。
- 用
dsh plugin --profile web list核对插件在列。 - 重建容器后再次核对,确认插件仍在。
- 插件配置与密钥同样在 DSH_HOME 下,不要单独放容器内。
- 需要迁移时,整目录复制而不是只复制插件包。
「插件在但配置没了」多半是配置写到了别处。 检查配置路径与环境变量,确认没有落到临时目录。
容器内装插件仍要网络。 下载失败与宿主机网络、镜像源有关;先确认容器能访问 registry。
重建容器的正确顺序
重建不是删了再起,顺序错了会丢数据。
- 停止旧容器,确认没有写入进行中。
- 备份挂载目录,至少保留一份可回退副本。
- 用同一个挂载与同一个 DSH_HOME 启动新容器。
- 启动后核对会话、插件与配置三样。
- 确认无误后再删除旧容器与旧镜像。
先备份再重建。 卷配置写错时,备份是唯一退路;直接删旧容器,可能连排查现场都没了。
版本要记录。 镜像标签、DSH 版本与插件清单写下来;升级出问题时能回到上一组。
四种失败
容器场景的失败集中在四类。
- 重建后数据全丢: 卷没挂或挂错路径;看环境变量与挂载点是否一致。
- 插件消失: 插件装在容器内路径;确认 profile 是否在挂载目录下。
- 端口访问不了: 映射错误或监听地址不对;先在本机 curl 对照。
- 权限错误: 容器用户对挂载目录无写权限;调整目录权限或运行用户。
四类的共同排查入口是「进容器看路径」,日志也要保留。 只看宿主机目录,无法确认容器内实际写到了哪里。容器日志在删除后可能丢失;出问题时先导出,再重建。
安全前提
容器化带来隔离,也带来新的暴露面。
- 镜像来源可信: 优先官方或自建镜像,避免来源不明的打包。
- 最小端口暴露: 只映射必要端口,优先本机地址。
- 密钥不进镜像: 用环境变量或挂载配置注入,不要烘焙进镜像。
- 插件权限收敛: 容器内同样遵循最小权限,不因为隔离就放宽。
- 定期更新: 基础镜像与 DSH 版本都要跟进安全更新。
隔离不等于安全。 容器能限制影响范围,但不能替代认证、权限与来源判断。
下一步
先挂对卷,再谈端口与插件。 想看容器安装的三种方案,看《DeepSeek Harness 在 Docker 里怎么装》;想看 Linux 部署,看《deepseek harness desktop linux 怎么跑》;想看远程访问安全,看《DeepSeek Harness 远程访问怎么配》。
常见问题
容器里跑 DeepSeek Harness 要挂数据卷,是因为会话、插件与配置都在 DSH_HOME 下。不挂卷,容器删除或重建后这些数据随容器一起消失;挂卷后数据留在宿主机。
端口映射只映射到宿主机本地地址更安全,例如 127.0.0.1:端口:容器端口。直接映射到所有网卡会把服务暴露到局域网或公网,需要额外的认证与限制。
容器重建后插件不见了但数据卷还在,多半是 DSH_HOME 没指向卷,或插件装在容器内另一个路径。确认环境变量与卷挂载点一致,再用 dsh plugin list 核对。
容器本身已有隔离层,但 DeepSeek Harness 的插件仍按沙箱模式运行;权限、路径与设备访问受容器限制。涉及图形界面或系统级操作的插件,在容器里可能不可用。
相关术语
- DSH_HOME
- DSH_HOME 是 DeepSeek Harness 的数据根目录,配置、会话、插件与缓存都在其下,可通过环境变量指定。— DeepSeek Harness 官方文档
- 数据卷
- 数据卷是 Docker 中独立于容器生命周期的持久化存储,容器删除后数据仍保留在宿主机。— DeepSeek Harness 官方文档
- 端口映射
- 端口映射把容器内端口绑定到宿主机端口,决定外部如何访问容器服务。— dsh CLI README
- 镜像
- 镜像是容器运行的基础文件系统与依赖快照,选择可信来源的镜像能减少供应链风险。— deepseek-harness 仓库
来源
- DeepSeek Harness 官方文档· deepseek-harness
- dsh CLI README· deepseek-ai
- deepseek-harness 仓库· deepseek-ai