免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

runsc 装好 Docker 不识别,Claude Code 跑排查任务:Key 用 TaoToken

runsc 装好 Docker 不识别,Claude Code 跑排查任务:Key 用 TaoToken 1. runsc 装好了 Docker 却不认问题到底卡在哪你在 Ubuntu 上按教程把 runsc 下载到 /usr/local/bin也写了 /etc/docker/daemon.jsonsystemctl restart docker也执行了结果docker info里 Runtime 列表压根没有 runscdocker run --runtimerunsc直接报unknown runtime。这个场景我遇到过不止一次尤其在 gVisor 沙箱 容器 远程浏览器访问这条链路上runsc 不识别会让后面 Ubuntu 桌面容器、VNC、NoVNC 全部起不来。这篇用排障视角走一遍先让 Claude Code 帮你逐项核对 runsc 路径、daemon.json 的 runtimes 字段、Docker 重启是否真的生效再回到 gVisor 运行 Ubuntu 容器并通过远程浏览器访问的完整流程。Key 从 TaoToken 拿Base URL 填https://taotoken.net/api真正执行排查动作的是 Claude CodeTaoToken 只负责提供可用的模型调用入口。适合谁看已经在 Ubuntu 上装了 Docker、想用 gVisor 做沙箱隔离、准备跑带 GUI 的 Ubuntu 容器并远程浏览器访问但被 runsc 不识别卡住的人。下面每一步都能直接复制执行报错也能对照排查。2. 先拿 TaoToken Key把 Claude Code 接到排查任务上排障这件事最怕人肉一行行猜。我的做法是让 Claude Code 当“排查执行器”把 daemon.json 内容、docker info报错、runsc 路径检查结果一起丢给它让它按清单核对。前提是 Claude Code 能正常调用模型这里用 TaoToken 的 Key。先到 TaoToken 官网创建 Key# 打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并创建 API Key # 拿到形如 sk-xxxx 的 Key 后配置 Claude Code 的 Base URL export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的Key如果你用的是 Claude Code 的配置文件方式可以写进环境变量或对应配置项核心就是 Base URL 指向https://taotoken.net/apiKey 用刚创建的那串。配好后跑一句简单对话确认链路通claude -p 回复 ok 即可返回正常说明 Claude Code 已经能调用模型。接下来所有排查指令都通过它执行。需要管理多个 Key 或看用量可以进控制台# Key 管理https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite # 新建/查看 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite注意TaoToken 只提供 Key 和模型调用入口runsc 路径核对、daemon.json 校验、Docker 重启验证这些动作都是 Claude Code 在你自己机器上执行的。别把两者搞混。3. 可复制配置runsc 路径 daemon.json 重启先把基础配置摆正这是后面让 Claude Code 排查的输入。第一步下载 runsc 并放到系统路径curl -Lo runsc https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc chmod x runsc sudo mv runsc /usr/local/bin/确认路径和可执行权限这一步经常被忽略which runsc ls -l /usr/local/bin/runsc /usr/local/bin/runsc --version如果which runsc没输出说明 PATH 或文件位置有问题Docker 自然找不到。接着写 daemon.json注意 runtimes 字段的层级sudo tee /etc/docker/daemon.json EOF { runtimes: { runsc: { path: /usr/local/bin/runsc } } } EOF写完先做 JSON 语法校验很多人栽在多余逗号或中文引号上sudo python3 -m json.tool /etc/docker/daemon.json能正常打印格式化 JSON 才算合法。然后重启 Docker 并确认服务真的起来了sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl status docker --no-pager到这里配置层面就齐了。把上面这些命令的输出收集起来下一步直接喂给 Claude Code 做核对。4. 让 Claude Code 跑 gVisor runsc 运行时排查任务这一步是核心。把 daemon.json 内容、docker info的 Runtime 段、runsc 路径检查结果拼成一段提示交给 Claude Code。可以这样组织claude -p 你是 Docker 运行时排查助手。请逐项核对以下信息找出 runsc 不被识别的原因 1. runsc 路径是否为 /usr/local/bin/runsc是否有可执行权限 2. /etc/docker/daemon.json 的 runtimes 字段是否正确JSON 是否合法 3. systemctl restart docker 是否成功docker 服务是否 active 4. docker info 的 Runtimes 列表是否包含 runsc 以下是现场信息 --- daemon.json --- $(sudo cat /etc/docker/daemon.json) --- runsc 检查 --- $(which runsc; ls -l /usr/local/bin/runsc; /usr/local/bin/runsc --version 21) --- docker info Runtimes --- $(docker info 21 | grep -A5 -i runtime) --- docker 服务状态 --- $(systemctl is-active docker) 请给出结论和修复命令。 Claude Code 会按清单逐项比对常见结论有三类路径写错比如写成了 /usr/bin/runsc、daemon.json 里 runtimes 拼成了 runtime、或者 Docker 重启失败导致配置没加载。拿到结论后按它给的命令修再重新验证。验证 runsc 是否被识别最直接的就是看docker infodocker info | grep -i runtime正常应该能看到runsc: /usr/local/bin/runsc这样的条目。然后跑一个最小容器确认运行时可用docker run --rm --runtimerunsc hello-world能正常输出 Hello from Docker说明 gVisor 沙箱运行时已经生效。这一步过了再往下做 Ubuntu 桌面容器才有意义。5. 跑通 Ubuntu 容器 远程浏览器访问链路runsc 识别之后回到 gVisor 跑 Ubuntu 容器并通过远程浏览器访问的完整流程。启动带 VNC 的 Ubuntu 容器docker run -d -it --runtimerunsc --name ubuntu-vnc -p 5901:5901 -e USERroot ubuntu bash进容器装桌面和 VNCdocker exec -it ubuntu-vnc bash apt update apt install -y xfce4 xfce4-goodies tightvncserver vncserver vncserver -kill :1 echo #!/bin/bash xrdb $HOME/.Xresources startxfce4 ~/.vnc/xstartup chmod x ~/.vnc/xstartup vncserver -geometry 1280x720宿主机装 NoVNC 并启动sudo apt install -y novnc novnc_server --vnc localhost:5901 --listen 6080浏览器访问http://服务器IP:6080/vnc.html输入 VNC 密码就能看到 gVisor 沙箱里的 Ubuntu 桌面。如果这一步容器起不来多半还是 runsc 运行时没生效回到第 4 步重新核对。检查项期望结果常见异常runsc 路径/usr/local/bin/runsc 可执行路径写错、无执行权限daemon.jsonruntimes.runsc.path 正确字段拼错、JSON 非法docker 服务active (running)重启失败、配置未加载docker infoRuntimes 含 runsc列表为空容器启动--runtimerunsc 成功unknown runtime6. 本篇常见错排查报错一unknown runtime: runsc。先看docker info有没有 runsc。没有就查 daemon.json 的 runtimes 字段层级确认是runtimes不是runtimepath 指向真实文件。改完必须systemctl restart docker。报错二daemon.json 改了但没生效。多半是 JSON 语法错误导致 Docker 启动时忽略了配置。用python3 -m json.tool校验或看journalctl -u docker有没有解析报错。报错三runsc 路径对但 Docker 找不到。检查文件权限chmod x是否执行再确认没有多个 runsc 版本冲突which -a runsc看全部路径。报错四容器起来了但浏览器访问不了。确认 6080 端口放行、NoVNC 进程在跑、VNC 密码正确。gVisor 沙箱内网络和普通容器略有差异端口映射要写全。报错五Claude Code 排查时读不到现场信息。确认 Base URL 是https://taotoken.net/api、Key 有效。链路不通时先跑claude -p ok验证。需要换 Key 或看文档# 接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite # 模型对话验证https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodelutm_campaignrewrite如果你要长期跑编码或 Agent 类任务反复手动配 Key 比较烦可以看 Coding Plan# https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite排查顺序建议固定成runsc 路径 → daemon.json 合法性 → Docker 服务状态 → docker info 运行时列表 → 最小容器验证。这五步走完runsc 不识别基本都能定位。把现场输出丢给 Claude Code 跑一遍清单核对比人肉猜快得多。
返回列表