🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 先把目标定清楚:让 Claude Code 用自然语言管 Docker
这篇要解决的事很具体:在 Claude Code 里注册一个 Docker MCP Server,然后用一句中文让它「列出本地容器,再读某个容器的日志」。整个过程控制在 10 分钟内,前提是你机器上已经装好 Docker 和 Claude Code。
MCP 是 Model Context Protocol,你可以把它理解成给 AI 装「外设驱动」的协议。Claude Code 本身能读写文件、跑命令,但它默认不知道你的 Docker 里跑了什么。挂上 Docker MCP Server 之后,容器列表、日志、镜像这些信息就变成了模型可以直接调用的工具。适合谁?适合每天跟容器打交道、又不想反复敲docker ps和docker logs的后端和运维同学。
我试过把这套流程跑通,中间踩的坑主要在两个地方:一是 MCP 注册的 JSON 路径写错,二是供应商没切到 TaoToken 导致请求直接失败。下面按顺序拆开讲,你照着做基本不会卡。
2. 环境准备与 Docker MCP Server 的获取
动手前先确认三样东西:Docker 在跑、Claude Code 能启动、你有权限改配置文件。
先验证 Docker:
docker --version docker psdocker ps能列出容器就说明守护进程正常。如果报Cannot connect to the Docker daemon,先把 Docker Desktop 或dockerd起起来,这一步不解决后面全白搭。
Docker 官方提供了 MCP 工具链,社区也有现成的 server 实现。这里用 Docker 官方的mcp命令方式,它会把 MCP Server 跑在容器里,隔离干净。先确认命令可用:
docker mcp --help如果提示找不到命令,说明你的 Docker 版本较旧,需要更新到较新的 Desktop 版本,官方 MCP 工具链是随新版一起分发的。更新后重开终端再试。
接着看 Claude Code 是否就绪:
claude --version能打印版本号即可。Claude Code 的 MCP 配置有两种作用域:项目级放在项目根目录的.mcp.json,用户级放在~/.claude.json或通过claude mcp add命令写入。为了不污染全局,我这里用项目级配置,进你的工作目录再操作。
3. 注册 Docker MCP Server 到 Claude Code
Claude Code 注册 MCP 有两种方式,命令行和手写 JSON。命令行更快,手写更可控,我都给你。
命令行方式:
claude mcp add docker -- docker mcp gateway run这条命令的意思是:新增一个名叫docker的 MCP Server,启动方式是执行docker mcp gateway run。gateway是官方提供的聚合入口,它会把 Docker 相关的工具统一暴露出来。
如果你更想手写配置,在项目根目录建.mcp.json:
{ "mcpServers": { "docker": { "command": "docker", "args": ["mcp", "gateway", "run"] } } }保存后回到 Claude Code,用/mcp命令查看连接状态。正常的话会看到docker这一项显示 connected,并列出它暴露的工具,通常包括容器列表、日志读取、镜像管理等。
这里有个容易翻车的点:command必须写docker而不是完整路径,除非你的 docker 不在 PATH 里。如果 Claude Code 启动时报spawn docker ENOENT,把command换成which docker输出的绝对路径,比如/usr/local/bin/docker。
注册完先别急着测自然语言,用/mcp确认工具列表出来了,再往下走。
4. 接入 TaoToken:拿 Key 与设为默认供应商
Claude Code 默认走 Anthropic 官方端点,国内直连经常超时。这一步把请求切到 TaoToken,同时完成鉴权。
先去官网注册并创建 API Key:
https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
登录后进控制台,在 API Keys 页面新建一个 Key,复制出来。控制台地址:
https://taotoken.net/console?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
拿到 Key 之后,通过环境变量告诉 Claude Code 走 TaoToken。Base URL 填https://taotoken.net/api:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="sk-你的TaoToken密钥"把这两行写进~/.zshrc或~/.bashrc可以持久化,重开终端生效。注意变量名是ANTHROPIC_AUTH_TOKEN,不是ANTHROPIC_API_KEY,写错了 Claude Code 会继续找官方 Key,然后报鉴权失败。
验证配置是否生效:
echo $ANTHROPIC_BASE_URL输出https://taotoken.net/api就对了。然后启动 Claude Code:
claude如果启动后对话能正常返回,说明供应商已经切到 TaoToken。这一步是整个流程的关键,MCP 只是给模型加工具,模型本身连不上,工具再多也没用。
想确认可用模型和计费口径,看接入文档:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_generate&utm_medium=csdn&utm_campaign=generate&utm_content=
5. 执行自然语言指令并验证结果
现在回到 Claude Code 会话里,直接输入中文:
列出我本地正在运行的 Docker 容器,然后读取名字里带 redis 的那个容器的最近 50 行日志Claude Code 会先调用dockerMCP Server 的容器列表工具,拿到结果后再调用日志工具。你会在界面上看到工具调用的过程,类似:
● docker - list_containers ⎿ CONTAINER ID IMAGE STATUS NAMES a1b2c3d4e5f6 redis:7 Up 2 hours redis-cache 9f8e7d6c5b4a nginx:latest Up 3 hours web-proxy ● docker - get_container_logs (container: redis-cache, tail: 50) ⎿ 1:M 01 Jan 2025 10:00:00.000 * Ready to accept connections 1:M 01 Jan 2025 10:00:01.123 * Background saving started ...看到两段工具调用都返回内容,就说明整条链路通了:Claude Code 解析你的中文 → 选中 Docker MCP 工具 → 执行 → 把结果组织成回答。
失败分支要会判断。如果 Claude Code 说「我没有可用的 Docker 工具」,说明 MCP 没连上,回第 3 步用/mcp检查。如果工具调用了但报permission denied,多半是 Docker socket 权限问题,Linux 下把当前用户加进 docker 组:
sudo usermod -aG docker $USER然后重新登录。如果日志读取返回空,检查容器名是否拼对,docker ps里NAMES列才是准确的名字。
再补一个常见情况:容器很多时,模型可能一次列不全。你可以把指令收窄,比如「只列出镜像名包含 redis 的容器」,减少工具返回的数据量,响应会更快。
6. 限制、成本与模型选择
几个实际会碰到的边界。Docker MCP Server 能做的事受它暴露的工具集限制,默认不包含docker exec这类交互式操作,想进容器里跑命令还是得手动。日志读取有行数上限,超大日志建议先在指令里限定tail行数,否则返回内容会撑爆上下文。
成本方面,MCP 工具调用会额外消耗 token,因为工具定义和返回结果都算输入。容器列表越长、日志越多,单次请求越贵。日常用建议把常用查询写成固定指令模板,减少模型来回试探。
模型选择上,工具调用能力强的模型在 MCP 场景下表现更稳,具体支持哪些模型、各自的价格和上下文长度,以官网和控制台实际展示为准,不同时间可能有调整。你可以先在控制台看当前可用的模型清单,再决定用哪个跑 Docker 这类多步工具任务。
最后提醒一句:ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN这两个环境变量是全局的,如果你同时用其他需要官方端点的工具,记得在对应终端里临时覆盖,别互相干扰。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度