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 打印在后台终端日志里,以此保证只有拥有服务器底层操作权限的管理员,才能拿到密钥授权访问。这种方式将"能访问环境"与"能查看服务器日志"绑定,形成一道天然的权限隔离层。

相关推荐
wz975413 小时前
Docker 从 systemd 托管容器、overlay2 存储驱动到 Compose 多容器实战
spring cloud·docker·eureka
新*14 小时前
ES 7.17 三节点 Docker 集群接入 IK 自定义词典:一次从丢插件到热更新的完整排障
运维·elasticsearch·docker·中文分词·ik分词
一心同学15 小时前
Hermes架构拆解之Profiles
ai·架构·agent·profiles·hermes
XLYcmy15 小时前
ASR识别任务两篇论文阅读分析与系统方案技术报告 上
论文阅读·ai·gpu·asr·论文分享·speechbrain·wespeaker
小白的码BUG之路15 小时前
Jenkins -- gitee+docker+harbor+k8s 部署项目
docker·gitee·jenkins
AlfredZhao15 小时前
Docker Compose 平滑切换环境变量文件,容器配置不残留
docker
duansamve1 天前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
一起学安全技术1 天前
拆大模型 06|Prompt 工程不靠玄学:上下文要当程序写
人工智能·语言模型·prompt·aigc
七夜zippoe1 天前
Agent 上线第一天就炸了:6 个生产事故的根因分析与修复记录
大数据·ai·agent·根因分析·修复记录
秋饼1 天前
GPT-Live 全双工语音 API Java 服务端落地实战:事件协议、会话恢复与生产踩坑
java·ai·技术分享·后端开发