使用 Claude Code 和 Docker MCP Toolkit 生成 Docker Compose 文件
本指南介绍了如何使用 Claude Code 与 Docker MCP Toolkit,使 Claude 能够实时搜索 Docker Hub,并从自然语言生成完整的 docker-compose.yaml 文件。
无需手动编写 YAML 或查找镜像标签,您只需描述一次您的堆栈——Claude 使用模型上下文协议 (MCP) 查询 Docker Hub 并构建一个生产就绪的 Compose 文件。
在本指南中,您将学习如何:
- 在 Docker Desktop 中启用 Docker MCP Toolkit
- 添加 Docker Hub MCP 服务器
- 将 Claude Code 连接到 MCP 网关(GUI 或 CLI)
- 在 Claude 内部验证 MCP 连接
- 要求 Claude 为 Node.js + PostgreSQL 应用生成并保存 Compose 文件
- 使用
docker compose up立即部署
使用 Claude Code 和 Docker MCP Toolkit 从自然语言生成 Docker Compose 文件
- 设置:启用 MCP Toolkit → 添加 Docker Hub MCP 服务器 → 连接 Claude Code
- 使用 Claude:用简单的英语描述您的堆栈
- 自动化:Claude 通过 MCP 查询 Docker Hub 并构建完整的
docker-compose.yaml - 部署:运行
docker compose up→ Node.js + PostgreSQL 在localhost:3000上运行 - 优势:无需编写 YAML。无需搜索镜像。描述一次 → Claude 为您构建。
预计时间:约 15 分钟
1. 您要构建的内容
目标很简单:使用 Claude Code 与 Docker MCP Toolkit 搜索 Docker Hub 镜像,并为 Node.js 和 PostgreSQL 设置生成一个完整的 Docker Compose 文件。
模型上下文协议 (MCP) 桥接了 Claude Code 和 Docker Desktop,使 Claude 能够实时访问 Docker 的工具。您无需在 Docker、终端命令和 YAML 编辑器之间切换,只需描述一次您的需求,Claude 就会处理基础设施细节。
为什么这很重要:这种模式可以扩展到复杂的多服务设置、数据库迁移、网络、安全策略——全部通过对话式提示完成。
2. 先决条件
请确保您已安装:
- Docker Desktop
- 启用支持 MCP Toolkit 的 Docker Desktop 更新
- 已安装 Claude Code
3. 安装 Docker Hub MCP 服务器
- 打开 Docker Desktop
- 选择 MCP Toolkit
- 转到 Catalog 选项卡
- 搜索 Docker Hub
- 选择 Docker Hub MCP 服务器
- 添加 MCP 服务器,然后打开 Configuration 选项卡
- 输入您的 Docker Hub 用户名
- 创建一个只读的个人访问令牌,并在 Secrets 下输入您的访问令牌
- 保存配置
公共镜像无需凭据即可工作。对于私有仓库,您可以稍后添加您的 Docker Hub 用户名和令牌。
4. 将 Claude Code 连接到 Docker MCP Toolkit
您可以通过 Docker Desktop 或使用 CLI 进行连接。
选项 A. 使用 Docker Desktop 连接
- 打开 MCP Toolkit
- 转到 Clients 选项卡
- 找到 Claude Code
- 选择 Connect
选项 B. 使用 CLI 连接
$ claude mcp add MCP_DOCKER -s user -- docker mcp gateway run
5. 在 Claude Code 内部验证 MCP 服务器
- 导航到您的项目文件夹:
$ cd /path/to/project
- 启动 Claude Code:
$ claude
- 在输入框中,输入:
/mcp
您现在应该看到:
- MCP 网关(例如
MCP_DOCKER) - Docker Hub MCP 服务器提供的工具
如果没有,请重启 Claude Code 或检查 Docker Desktop 以确认连接。
6. 创建一个基本的 Node.js 应用
当 Claude Code 可以检查真实项目时,它会生成更准确的 Compose 文件。现在设置应用程序代码,以便代理稍后可以绑定挂载它。
在项目文件夹内,创建一个名为 app 的文件夹:
$ mkdir app
$ cd app
$ npm init -y
$ npm install express
创建 index.js:
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Node.js, Docker, and MCP Toolkit are working together!");
});
app.listen(3000, () => {
console.log("Server running on port 3000");
});
在 package.json 中添加启动脚本:
"scripts": {
"start": "node index.js"
}
应用准备就绪后,返回项目根目录(cd ..)。
7. 要求 Claude Code 设计您的 Docker Compose 堆栈
将以下消息粘贴到 Claude Code 中:
使用 Docker Hub MCP 服务器:
在 Docker Hub 中搜索官方 Node.js 镜像和 PostgreSQL 镜像。
选择稳定、常用的标签,例如 Node LTS 版本和最新的主要 Postgres 版本。
生成一个 Docker Compose 文件(`docker-compose.yaml`),包含:
- app:
- 在端口 3000 上运行
- 将现有的 ./app 目录绑定挂载到 /usr/src/app
- 设置 /usr/src/app 为工作目录并运行 `npm install && npm start`
- db:使用命名卷在端口 5432 上运行
包括:
- Postgres 的环境变量
- 共享桥接网络
- 适当的健康检查
- 使用标签 + 索引摘要固定镜像版本
Claude 将通过 MCP 搜索镜像,检查 app 目录,并生成一个挂载并运行您本地代码的 Compose 文件。
8. 保存生成的 Docker Compose 文件
告诉 Claude:
将最终的 Docker Compose 文件(docker-compose.yaml)保存到当前项目目录中。
您应该看到类似以下内容:
services:
app:
image: node:<tag>
working_dir: /usr/src/app
volumes:
- .:/usr/src/app
ports:
- "3000:3000"
depends_on:
- db
networks:
- app-net
db:
image: postgres:18
environment:
POSTGRES_USER: example
POSTGRES_PASSWORD: example
POSTGRES_DB: appdb
volumes:
- db-data:/var/lib/postgresql
ports:
- "5432:5432"
networks:
- app-net
volumes:
db-data:
networks:
app-net:
driver: bridge
9. 运行 Docker Compose 堆栈
从项目根目录:
$ docker compose up
Docker 将:
- 通过 Docker Hub MCP 拉取选定的 Node 和 Postgres 镜像
- 创建网络和卷
- 启动容器
打开浏览器:
http://localhost:3000
您的 Node.js 应用现在应该正在运行。
结论
通过将 Claude Code 与 Docker MCP Toolkit、Docker Desktop 和 Docker Hub MCP 服务器结合使用,您可以用自然语言描述您的堆栈,并让 MCP 处理细节。这消除了上下文切换,取而代之的是一个由模型上下文协议集成驱动的流畅、引导式工作流程。
下一步
- 探索 Docker MCP 目录 中提供的 220 多个 MCP 服务器
- 将 Claude Code 连接到您的数据库、内部 API 和团队工具
- 与您的团队共享您的 MCP 设置,以便每个人都保持一致的工作方式
开发的未来不是在不同工具之间切换,而是让工具以简单、安全、可预测的方式协同工作。Docker MCP Toolkit 将这一未来带入您的日常工作流程。
了解更多
- 探索 MCP 目录: 发现容器化、安全加固的 MCP 服务器
- 在 Docker Desktop 中开始使用 MCP Toolkit: 需要 4.48 或更高版本才能自动启动
- 阅读 MCP 恐怖故事系列: 了解常见的 MCP 安全陷阱以及如何避免它们