最新的deepseek harness出来了,这个工具非常强大,看起来是一个类似官方网页版的聊天工具,其实他的插件功能能访问本地和网络io,可以实现主流ai编程工具、龙虾的功能。
但是我不想在本地装node.js,太多烂七八糟的软件了,使用docker来搞个虚拟机安装node.js。基本上就是下载docker,安装node.js,安装deepseek harness。
docker里面的镜像和容器,跟git差不多,镜像就是服务器的仓库,容器就是本地的备份,平时都是在容器里面搞,确认了就保存到镜像里面去。容器可以随时删除,再从镜像拉就行了。
1 下载安装docker windows版本和安装node.js
1.1 首次启动会报错Virtualization support not detected,运行如下命令启用虚拟机平台然后重启电脑:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
1.2 重启后如果提示虚拟机wsl失败running wslexec: An error occurred while running the command,安装虚拟机:
wsl --install --no-distribution
1.3 拉取镜像:
docker pull node:24-alpine
如果失败配置docker设置中docker engine的镜像地址:
"registry-mirrors": [
"https://docker.m.daocloud.io"
]
1.4 启动后验证node.js:
docker run -it --rm --entrypoint sh node:24-alpine
node -v
npm -v
2 进入docker中,启动node.js容器的shell,名字为:dsh-builder,后续需要保存镜像
docker run -it --name dsh-builder -p 3080:3080 --entrypoint sh node:24-alpine
#docker run -it --rm -p 3080:3080 --entrypoint sh node:24-alpine 一次性运行的命令
3 安装依赖,需要编译dsh
apk add --no-cache python3 py3-pip make g++ git
4 全局安装dsh,不用每次都安装一次
npm install -g @deepseek-ai/dsh
5 不要退出当前docker shell,另开一个cmd窗口,运行如下命令保存镜像为 my-dsh:latest :
docker commit dsh-builder my-dsh:latest
6 使用保存的镜像开启dsh服务,可以正常的镜像内部运行:
docker run -it --rm -p 3080:3080 -e DEEPSEEK_API_KEY="你的API密钥" --entrypoint node my-dsh:latest --expose-internals /usr/local/bin/dsh web
7 win10中打开浏览器http://127.0.0.1:3080 没有显示dsh服务,是因为dsh只连接了内部的127.0.0.1,外部ip地址禁止接入了,修改dsh代码删掉限制:
sed -i 's/if (options.host === "0.0.0.0") program.error(\^;*;/\/\/ &/' /usr/local/lib/node_modules/@deepseek-ai/dsh/node_modules/@deepseek-ai/dsh-web-app/lib/startup.js
改完了记得另开一个cmd终端保存容器:
docker commit -m "allow host 0.0.0.0" dsh-modified my-dsh:latest
8 现在在win10系统中打开:http://127.0.0.1:3080,可以看到dsh的页面了,可以正常使用了。
9 后续再使用的时候:
从镜像my-dsh:latest,新建并运行容器名为dsh-modified:
docker run -it --name dsh-modified -p 3080:3080 --entrypoint sh my-dsh:latest
运行dsh:
node --expose-internals /usr/local/bin/dsh web --host 0.0.0.0 &
新开cmd窗口保存容器(会生成当时容器的快照,下次打开容器会进入当前的快照):
docker commit dsh-modified my-dsh:latest
下次再进入同一容器并保存操作:
docker exec -it dsh-modified sh
docker commit dsh-modified my-dsh:latest
一次性打开容器不保存:
docker run -it --rm -p 3080:3080 --entrypoint node my-dsh:latest --expose-internals /usr/local/bin/dsh web --host 0.0.0.0
开启容器
docker start dsh-modified
停止容器
docker stop dsh-modified
10 其他命令:
列举所有容器
docker ps -a
列举所有镜像
docker images
删除容器
docker rm -f dsh-modified
最后的效果:

