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