openclaw docker部署需通过环境变量sandbox_volumes和卷挂载/vol/run/docker.sock双重配置,才能使ai沙盒访问宿主机文档;必须先确认嵌套docker支持并挂载docker套接字,再按目录或单文件方式挂载文档路径至/workspace下。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw Docker部署后默认无法访问宿主机上的文档文件,必须通过环境变量和卷挂载双重配合,才能让AI智能体在沙盒会话中直接读写你本地的PDF、Markdown、Word等文档。
确认OpenClaw容器运行时支持嵌套Docker
这一步是接入本地文档的前提。OpenClaw需要在容器内再启动一个“沙盒容器”来执行操作,因此宿主Docker套接字必须挂载且可被容器内调用。
检查是否已挂载:运行 docker inspect openclaw-app | grep -A 5 \"Volumes\",确认输出中包含 /var/run/docker.sock:/var/run/docker.sock。
若缺失,请停止容器并重新启动,务必带上 -v /var/run/docker.sock:/var/run/docker.sock 参数。没有这个,后续所有文档挂载都会失效——AI根本进不了沙盒环境。
方法一:用SANDBOX_VOLUMES环境变量挂载单个文档目录
这是最常用也最稳妥的方式,适用于集中存放文档的场景(如 ~/docs 或 /mnt/docs)。
第一步:确定你的文档根目录绝对路径,例如 /home/yourname/docs。
第二步:设置环境变量,将本地路径映射到沙盒内的固定工作区:export SANDBOX_VOLUMES="/home/yourname/docs:/workspace/docs"
第三步:启动容器时传入该变量,并确保其他必要参数齐全:
docker run -d --name openclaw-app \<br> -e SANDBOX_VOLUMES=$SANDBOX_VOLUMES \<br> -v /var/run/docker.sock:/var/run/docker.sock \<br> -v ~/.openclaw:/.openclaw \<br> -p 3000:3000 \<br> --add-host host.docker.internal:host-gateway \<br> openclaw/openclaw:latest
【注意】/workspace/docs 是沙盒内默认可访问路径,不要改成 /root 或 /home —— 沙盒用户无权访问这些位置
方法二:挂载单个PDF或MD文件(适合临时调试)
当你只想让AI快速分析一份合同PDF或一篇技术文档时,不必挂整个目录。
方法一:先复制文件到容器外的临时位置,比如 /tmp/report.pdf;
方法二:启动时用 -v 直接绑定该文件:
docker run -d --name openclaw-app \<br> -e SANDBOX_VOLUMES="/tmp/report.pdf:/workspace/report.pdf" \<br> -v /var/run/docker.sock:/var/run/docker.sock \<br> -v ~/.openclaw:/.openclaw \<br> -p 3000:3000 \<br> openclaw/openclaw:latest
这样沙盒启动后,/workspace/report.pdf 就能被AI直接打开解析。但注意:只读挂载,AI无法修改原文件;如需保存修改结果,得另配输出目录。
验证文档是否成功接入
容器启动后,打开浏览器访问 http://localhost:3000,新建会话。
在任务栏输入:“列出 /workspace/docs 目录下的所有文件”,回车执行。
如果看到你本地 docs 文件夹里的 PDF、MD、TXT 文件名正常返回,说明挂载成功。
若提示 “No such file or directory”,请立即检查:
① SANDBOX_VOLUMES 路径中冒号前后是否都用了绝对路径;
② 宿主机上该路径是否存在且当前用户有读取权限;
③ 容器是否使用 --rm 参数导致每次重启都丢失配置——这种模式下环境变量不会持久化。











