Deepseek Harness镜像离线部署

1. 前言

本文记录通过容器镜像方式,本地部署 Deepseek Harness(DSH)的完整流程。作者已将 DSH 运行所需的全部环境打包成镜像,省去了部署时构建环境的繁琐准备,只需下载、导入并运行容器,即可快速完成本地部署。

2. 前提条件

部署前请确认本机环境满足以下要求:

  • Docker 20.10+ 以上版本
  • 已安装 Docker Compose(可选,本文使用 docker run 直接部署)
  • 磁盘剩余空间建议 10GB 以上(镜像解压后占用较大)

检查 Docker 版本:

bash 复制代码
docker --version

3. 下载镜像包

镜像包已上传至网盘,下载后得到一个 dsh-latest.tar 文件:

下载完成后,确认文件完整性:

bash 复制代码
ls -lh dsh-latest.tar

4. 导入镜像

使用 docker load 命令将镜像包导入本地 Docker:

bash 复制代码
docker load -i dsh-latest.tar

导入完成后,验证镜像是否成功加载:

bash 复制代码
docker images | grep dsh

5. 创建工作目录

创建容器挂载的工作目录,用于存放项目代码和文件(以当前用户目录为例):

bash 复制代码
mkdir -p /home/liuwenlin/workspace

提示:目录路径可根据实际需求调整,后续 docker run 中的挂载参数需同步修改。

6. 运行容器

使用以下命令创建并启动 DSH 容器:

bash 复制代码
docker run -d --name dsh \
  --restart unless-stopped \
  -p 0.0.0.0:3080:3080 \
  -v dsh-data:/home/dsh/.dsh \
  -v /home/liuwenlin/workspace:/workspace \
  -e DSH_HOME=/home/dsh/.dsh \
  -e DSH_TRUST_ALL=1 \
  registry.cn-hangzhou.aliyuncs.com/skymirror/dsh:latest --no-open

参数说明:

参数 说明
-d 后台运行容器
--name dsh 指定容器名称
--restart unless-stopped 容器异常退出时自动重启
-p 0.0.0.0:3080:3080 映射 3080 端口到宿主机
-v dsh-data:/home/dsh/.dsh 持久化 DSH 配置数据
-v /home/liuwenlin/workspace:/workspace 挂载工作目录
-e DSH_HOME=/home/dsh/.dsh 指定 DSH 数据目录
-e DSH_TRUST_ALL=1 信任所有来源
--no-open 启动时不自动打开浏览器

7. 获取访问 Token

容器启动后,查看日志获取访问 Token:

bash 复制代码
docker logs dsh

在日志输出中找到 Token 字段,复制其值。然后在浏览器中访问:

复制代码
http://127.0.0.1:3080/?token=DWX5wExFcMYzh7Aj9BkvV8rNc6dRLvF1UPImDL3iotY

将 URL 中的 Token 替换为你日志中实际输出的值。

8. 常见问题排查

容器启动失败

bash 复制代码
docker logs dsh

查看错误日志,常见原因包括端口被占用、镜像未正确导入等。

端口被占用

bash 复制代码
docker ps -a | grep 3080

若端口被占用,可修改 -p 参数映射到其他端口,如 -p 3081:3080。

Token 无法访问

确认浏览器访问的 Token 与日志输出一致,且容器处于运行状态:

bash 复制代码
docker ps | grep dsh

9. 为什么要使用 Token 访问?

这属于该类工具的默认安全机制(Secure by Default),主要基于以下两点考虑:

必须显式鉴权:作为能执行系统命令的开发环境,官方刻意不开放"无密码直接裸连",防止内网暴露引发安全事故。任何访问者都必须持有有效 Token 才能进入环境,避免未授权用户直接操作容器。

物理隔离验证:官方故意只把 Token 打印在后台终端日志里,以此保证只有拥有服务器底层操作权限的管理员,才能拿到密钥授权访问。这种方式将"能访问环境"与"能查看服务器日志"绑定,形成一道天然的权限隔离层。

相关推荐
落魄实习生1 小时前
Agent Scope Java 2.x 系列【10】Middleware
java·开发语言·ai
通信瓦工2 小时前
利用浊度和电导率测量确定乙二醇基流体的质量
网络·数据库·ai
林伽一2 小时前
100 万输出词元与窄开放,前沿模型发布范式正在改写|2026年10月02日
人工智能·科技·安全·ai
bigdata-余建新2 小时前
week5
ai
光依旧3 小时前
PageIndex没翻车,翻车的是我的解析器
docker·langchain·大模型·向量数据库·pdf解析·rag·pageindex
Dawson Zhu3 小时前
智能体记忆系统:原理解析与工程实践
人工智能·语言模型·架构·aigc·agi
孙启超3 小时前
【FDE开发指南】第 1 课:认识 FDE —— 从一次生产事故说起
人工智能·ai·职场技能
燐妤4 小时前
LangGraph-复习总览
python·ai·面试·agent·学习方法·langgraph
VIP_CQCRE4 小时前
让 Claude 实时联网搜索:Ace Data Cloud Serp MCP 接入指南
ai·claude·搜索·mcp·acedatacloud
西索斯coding4 小时前
grok-4.7 调用一直 429 怎么办?不是额度用完——是 RPM 和 TPM 双桶限流,附响应头读取代码和退避策略
大数据·人工智能·机器学习·ai