MCP Docker 部署器
🐳 这个表情符号在中文里通常被理解为“鲸鱼”或“海豚”的形象,具体翻译可能因语境而异,但直接对应的文字可以是“鲸鱼”或“海豚”。不过,由于表情符号的直观性,很多时候直接使用“🐳”即可,无需翻译成具体文字。如果非要翻译,可以简单地说“鲸鱼”或“海豚”。 一个针对Docker操作的专业MCP(模型上下文协议)服务器,具备企业级架构
](https://golang.org)  
MCP Docker Deployer 是一款已准备好投入生产的工具,它通过模型上下文协议(Model Context Protocol)实现了人工智能助手与 Docker 基础设施之间的无缝集成。该工具使大型语言模型(LLMs)能够通过简洁、结构清晰的界面安全高效地执行 Docker 操作。
🚀 主要功能
🎯(目标、瞄准) 核心功能
- Docker镜像管理列出、检查和管理Docker镜像
- 集装箱运营查看容器状态、日志并管理生命周期
- Docker Compose 集成从 Compose 文件部署多容器应用程序
- 实时监控跟踪部署进度和容器状态
🏗️(建筑工地) 企业架构
- 清洁架构通过接口驱动设计实现关注点分离
- 依赖注入适用于可测试和可维护代码的适当依赖注入(DI)容器
- 设计模式工厂模式、策略模式和单例模式正确实现
- 错误处理全面的错误处理与结构化日志记录
🧪(表示实验室或化学实验的符号) 质量保证
- 单元测试关键组件的测试覆盖率超过95%
- 已准备好集成便于模拟的接口,轻松进行测试
- 准备好实施CI/CD(持续集成/持续交付)带有构建自动化和Docker支持的Makefile
- 代码质量遵循Go的最佳实践和惯用模式
🛠️(工具或修理的象征,无直接对应中文词汇,可理解为“工具”或根据上下文译为“修理工具”等) 开发者体验
- 轻松配置基于环境的配置,带有合理的默认值
- 集装箱就绪用于生产部署的多阶段Docker构建
- 文档包含示例的全面文档
- 开发工具代码检查、格式化和测试自动化
🎯 使用场景
🤖 表示机器人或机器人的形象。 AI助手集成
- ChatGPT/Claude 集成启用AI助手管理Docker基础设施
- 自动化部署由大型语言模型(LLM)驱动的部署工作流
- 基础设施管理基于人工智能的容器编排
- 发展援助帮助开发人员进行Docker操作
🏢 翻译为中文是“办公楼”或“公司大楼”。这个表情符号通常用来代表办公环境或公司场所。 企业场景
- CI/CD 管道(或:持续集成/持续交付流水线)与自动化部署系统集成
- DevOps 工作流简化集装箱管理操作
- 监控与调试快速集装箱检查与故障排除
- 多环境管理在开发、预生产和生产环境中进行部署
🛠️(工具/修理/维修的象征) 开发工作流程
- 本地开发为开发环境快速设置容器
- 测试自动化自动化测试环境配置
- 微服务管理部署和管理复杂的服务架构
- 资源优化监控并优化容器资源使用
🏆 为什么选择MCP Docker Deployer?
✅ 准备就绪,可投入生产
- 企业级架构设计时考虑了可扩展性和可维护性
- 全面测试高测试覆盖率确保可靠性
- 错误容错性强大的错误处理和恢复机制
- 性能优化高效资源利用和快速操作
🔧 修理工具或螺丝刀的符号,常用于表示需要修理或调整的物品或情况。 对开发者友好
- 清洁代码结构良好、易于阅读和维护的代码库
- 轻松扩展接口驱动的设计便于轻松添加功能
- 文档包含实用示例的全面文档
- 社区支持开源且持续维护
🚀 表情符号“🚀”通常表示火箭、快速前进或加速。在中文中,它可以直接用作描述火箭或表示快速、迅速的意思。例如:“我们即将发射火箭(🚀)!”或者“让我们加速前进(🚀)!” 现代发展
- Go 最佳实践遵循Go语言的惯用模式和约定
- 容器原生设计时考虑了容器化的需求
- 云就绪适用于云原生部署
- 符合标准MCP协议确保广泛兼容性
建筑学
这个项目遵循Go语言的最佳实践,采用了清晰的架构设计:
.
├── cmd/ # Application entry points
│ └── main.go # Main application entry point
├── internal/ # Private application code
│ ├── app/ # Application setup and DI
│ ├── config/ # Configuration management
│ ├── docker/ # Docker client operations
│ ├── compose/ # Docker Compose handling
│ ├── logger/ # Logging abstraction
│ ├── mcp/ # MCP protocol handling
│ └── utils/ # Utility functions
├── bin/ # Build output
├── Dockerfile # Container build
├── Makefile # Build automation
├── docker-entrypoint.sh # Container entry point
├── .gitignore # Git ignore rules
├── LICENSE # MIT License
├── README.md # Project documentation
└── go.mod # Go module definition所使用的设计模式
- 接口隔离所有主要组件的界面均简洁明了
- 依赖注入通过构造函数进行正确的依赖注入(DI)
- 工厂模式简洁的对象创建
- 策略模式可插拔的实现
- 单例模式在适当的情况下共享资源
🚀 快速入门
先决条件
- Docker已安装并正在运行
- Go 1.24及以上版本从源代码构建
- 制造用于构建自动化(可选)
⚡ 一键设置
# Clone and build
git clone https://github.com/wahyurudiyan/go-mcp-docker.git
cd go-mcp-docker
make all
# Run the MCP server
./bin/mcp-docker-deployer🐳 Docker 快速入门
# Pull and run
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
wahyurudiyan/mcp-docker-deployer:latest
# Or build locally
docker build -t mcp-docker-deployer .
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock mcp-docker-deployer📋 安装
来自源(或“来源”)
# Clone the repository
git clone https://github.com/wahyurudiyan/go-mcp-docker.git
cd go-mcp-docker
# Install dependencies
make deps
# Build the application
make build
# Verify installation
./bin/mcp-docker-deployer --version使用 Docker
# Build the image
docker build -t mcp-docker-deployer .
# Run with Docker socket access
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-e LOG_FILE=/tmp/docker-deployer.log \
mcp-docker-deployer
# Run in background
docker run -d \
--name mcp-docker-deployer \
-v /var/run/docker.sock:/var/run/docker.sock \
mcp-docker-deployer来自二进制发布版
# Download the latest release (coming soon)
curl -L https://github.com/wahyurudiyan/go-mcp-docker/releases/latest/download/mcp-docker-deployer-linux-amd64 -o mcp-docker-deployer
# Make executable
chmod +x mcp-docker-deployer
# Run
./mcp-docker-deployer配置
该应用程序可以通过环境变量进行配置:
| 变量 | 默认值 | 描述 |
|---|---|---|
LOG_FILE | docker-deployer.log | 日志文件路径 |
DOCKER_HOST | 空 | Docker 守护进程套接字 |
MCP_TOOL_NAME | Docker Deployer Tool | MCP 工具名称 |
MCP_TOOL_VERSION | 1.2.0 | MCP 工具版本 |
APP_NAME | mcp-docker-deployer | 应用程序名称 |
💡 使用示例
作为MCP服务器
该应用程序作为一个MCP服务器运行,通过stdio进行通信:
# Basic usage
./bin/mcp-docker-deployer
# With custom log file
LOG_FILE=/var/log/mcp-docker.log ./bin/mcp-docker-deployer
# With custom configuration
MCP_TOOL_NAME="My Docker Tool" ./bin/mcp-docker-deployer可用操作
📦 箱子/包裹 Docker镜像管理
- 列出图片:
list images,images - 图像检查查看图片详情、尺寸和创建日期
- 标签管理查看镜像标签和仓库
🐳 这个表情符号在中文中通常被理解为“鲸鱼”或“水瓶”(根据上下文可能有所不同),但直接翻译并没有一个固定的中文词汇,因为它是一个图形表情,用于网络交流中表达特定的情绪或情境。如果非要给一个大致的描述,可以是“鲸鱼”或“水瓶图案”。在实际使用中,它可能代表一种轻松、可爱或神秘的氛围。 集装箱操作
- 列出容器:
list containers,containers,ps - 集装箱状态查看运行中、已停止和已退出的容器
- 资源监控检查容器资源使用情况
🚀 表示火箭、快速上升或加速等意思。 Docker Compose 部署
- 部署服务:
compose up,up,deploy - 多容器应用部署复杂应用程序
- 服务管理启动、停止和监控服务
🎯 MCP请求示例
基本的Docker操作
{
"method": "tools/call",
"params": {
"name": "docker_deployer",
"arguments": {
"prompt": "show me all docker images"
}
}
}{
"method": "tools/call",
"params": {
"name": "docker_deployer",
"arguments": {
"prompt": "list all running containers"
}
}
}Docker Compose 部署
{
"method": "tools/call",
"params": {
"name": "docker_deployer",
"arguments": {
"sequence": ["list images", "compose up"],
"compose_yaml": "version: '3.8'\nservices:\n web:\n image: nginx:latest\n ports:\n - '80:80'\n restart: always\n redis:\n image: redis:alpine\n ports:\n - '6379:6379'"
}
}
}复杂的多步骤操作
{
"method": "tools/call",
"params": {
"name": "docker_deployer",
"arguments": {
"sequence": [
"list images",
"list containers",
"compose up"
],
"compose_yaml": "version: '3.8'\nservices:\n database:\n image: postgres:13\n environment:\n POSTGRES_DB: myapp\n POSTGRES_USER: user\n POSTGRES_PASSWORD: password\n ports:\n - '5432:5432'"
}
}
}🔧 集成示例
Claude 桌面集成
{
"mcpServers": {
"docker-deployer": {
"command": "/path/to/mcp-docker-deployer",
"args": []
}
}
}定制化AI助手
// Example Go integration
client := mcp.NewClient("docker-deployer")
response, err := client.Call(mcp.CallToolRequest{
Name: "docker_deployer",
Arguments: map[string]interface{}{
"prompt": "list all containers",
},
})🔍 故障排除
常见问题
Docker 套接字连接
# Error: "Cannot access Docker daemon"
# Solution: Ensure Docker is running and socket is accessible
sudo systemctl status docker
sudo usermod -aG docker $USER权限问题
# Error: "Permission denied"
# Solution: Check file permissions and Docker socket access
ls -la /var/run/docker.sock
sudo chmod 666 /var/run/docker.sock构建问题
# Error: "Go modules not found"
# Solution: Clean and rebuild
make clean
make deps
make build调试模式
# Enable verbose logging
LOG_LEVEL=debug ./bin/mcp-docker-deployer
# Check configuration
./bin/mcp-docker-deployer --config-check日志分析
# View real-time logs
tail -f docker-deployer.log
# Search for errors
grep "ERROR" docker-deployer.log
# View recent activity
tail -n 50 docker-deployer.log⚡ 性能与基准测试
🚀 火箭/快速前进/飞速发展(根据上下文可灵活翻译) 性能特性
- 快速启动\< 100毫秒初始化时间
- 内存不足\< 50MB 基线内存使用量
- 高吞吐量每秒1000+次操作
- 高效的输入/输出(I/O)针对大输出的流式响应
📊(表格) 基准测试(或基准指标)
| 操作 | 平均时间 | 内存使用 |
|---|---|---|
| 列出图片 | 45毫秒 | 2MB |
| 列出容器 | 32毫秒 | 1.5MB |
| 构建并部署 | 2.3秒 | 8MB |
| 启动时间 | 89毫秒 | 12MB |
🔧 修理工具或螺丝刀的符号,常用于表示需要修理或调整的物品或情况。 优化特性
- 连接池重用Docker客户端连接
- 流式输出大输出量高效传输
- 缓存针对重复操作的智能缓存
- 资源管理适当的清理和垃圾回收
🛣️ 路线图
🎯(目标) 版本1.3.0(2024年第四季度)
- \[ \] 集装箱管理启动、停止、重启容器
- \[ \] 批量操作创建、挂载、管理卷
- \[ \] 网络管理Docker 网络操作
- \[ \] 图像操作拉取、推送、删除镜像
🚀 表情符号“🚀”在中文中通常被理解为“火箭”或“快速前进”的意思,没有直接的中文翻译,但可以根据上下文理解为“火箭”或类似含义的词汇。 版本1.4.0(2025年第一季度)
- \[ \] Kubernetes 支持基本的Kubernetes(k8s)集成
- \[ \] 监控集成Prometheus 指标
- \[ \] 网络仪表盘用于监控的简单网页用户界面
- \[ \] 备份/恢复容器状态持久化
🌟 版本2.0.0(2025年第二季度)
- \[ \] 多集群支持管理多个Docker主机
- \[ \] 高级安全基于角色的访问控制(RBAC)和身份验证
- \[ \] 插件系统可扩展架构
- \[ \] GraphQL API现代API接口
💡 灵感/想法(常用于表示突然想到的点子或创意) 未来改进方向
- \[ \] 基于人工智能的优化智能资源管理
- \[ \] 成本追踪云成本优化
- \[ \] 合规安全合规扫描
- \[ \] 集成中心与流行工具连接
🤝 贡献(或“参与贡献”)
我们欢迎投稿!以下是您能提供的帮助方式:
🎯(目标/靶心) 贡献领域
- 功能开发新的Docker操作
- 文档改进文档和示例
- 测试增加更多的测试覆盖率
- 演出优化现有代码
- 错误修复快来帮忙消灭这些小错误!
🛠️(工具/螺丝刀) 开发环境设置
# Prerequisites
- Go 1.24 or later
- Docker daemon running
- Make (optional, for build automation)
# Clone the repository
git clone https://github.com/wahyurudiyan/go-mcp-docker.git
cd go-mcp-docker
# Install dependencies
make deps
# Run tests
make test
# Build the application
make build🔄 翻译成中文是:循环/旋转(符号本身无具体含义,根据上下文可理解为表示循环、重复或旋转的动作) 开发工作流程
# Format code
make fmt
# Run linter
make lint
# Run tests with coverage
make test-coverage
# Development build and run
make dev
# Cross compile for Linux
make build-linux📝 翻译为中文是:📝(这个符号本身没有直接的中文翻译,它通常代表“笔记”或“待办事项”的意思,可以理解为“记事本”或“待办事项列表”的图标。) 贡献指南
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 提交一个拉取请求
🎨 表示涂鸦、艺术创作或绘画的符号。 代码风格
- 遵循Go语言的规范和格式
- 为新功能编写单元测试
- 根据需要更新文档
- 使用有意义的提交信息
- 保持拉取请求(PRs)的针对性和描述清晰
测试
该项目包括全面的单元测试:
# Run all tests
make test
# Run tests with coverage
make test-coverage
# Run specific package tests
go test ./internal/utils
go test ./internal/config
go test ./internal/loggerAPI 参考文档
Docker 客户端接口
type Client interface {
ListImages(ctx context.Context, w io.Writer) error
ListContainers(ctx context.Context, w io.Writer) error
Close() error
}编曲管理界面
type Manager interface {
Deploy(ctx context.Context, composeYAML string, w io.Writer) error
ParseServices(composeYAML string) ([]composeTypes.ServiceConfig, error)
}日志记录接口
type Logger interface {
Info(args ...interface{})
Infof(format string, args ...interface{})
Error(args ...interface{})
Errorf(format string, args ...interface{})
Fatal(args ...interface{})
Fatalf(format string, args ...interface{})
WithField(key string, value interface{}) *logrus.Entry
WithFields(fields logrus.Fields) *logrus.Entry
}🔒 安全
🛡️ 翻译为中文是“盾牌”。这个符号通常用来表示保护、防御或安全。 安全特性
- 无特权提升(或:无权限提升)以最小必要权限运行
- 输入验证所有输入都经过验证和清理
- 错误净化(或错误处理)敏感信息不会在错误中暴露
- 审计日志记录所有操作均记录在案,以供安全审计
🔐(锁形符号,常用于表示密码、保密或安全) 安全最佳实践
- Docker 套接字访问需要显式挂载Docker套接字
- 无秘密存储不存储任何凭据或秘密信息
- 只读操作出于安全考虑,默认操作为只读
- 容器隔离在隔离的容器环境中运行
🚨(紧急警报/注意) 安全考虑事项
# Run with non-root user (recommended)
docker run --user 1000:1000 -v /var/run/docker.sock:/var/run/docker.sock mcp-docker-deployer
# Limit Docker socket access
docker run --cap-drop ALL --cap-add DAC_OVERRIDE -v /var/run/docker.sock:/var/run/docker.sock mcp-docker-deployer
# Use read-only filesystem
docker run --read-only -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp mcp-docker-deployer🔍 漏洞报告
如果您发现安全漏洞,请:
- 不要 公开发行股票
- 请发送邮件至:security@wahyurudiyan.com
- 包含有关漏洞的详细信息
- 我们将在48小时内回复
📞 支持与社区
💬(这个表情符号在中文中通常没有直接对应的翻译,它表示的是“对话”或“聊天”的意思,可以简单地理解为“说”或“聊聊”。) 寻求帮助
- GitHub Issues(GitHub问题)报告错误并提出功能请求
- 讨论提问并分享想法
- 文档全面指南和API参考
- 示例实际使用案例
🌐 表示“互联网”或“网络”。 社区资源
- 维基社区维护的文档
- Gitter 聊天室实时讨论(即将推出)
- YouTube频道教程和演示(即将推出)
- 博客最佳实践与案例分析
📧 电子邮件符号,可直接表示为“电子邮件”或“电邮”。 联系方式
- 维护者瓦尤·R·萨普特拉
- LinkedIn(领英): “wahyurudiyan”这个词汇在中文中并没有直接对应的翻译,因为它看起来像是一个特定语境或文化背景下的专有名词或创造词。如果尝试将其拆解并基于字面意义进行推测,可能会得到一些不准确的翻译,比如“启示之光”或“神圣指引”等,但这些都只是基于词汇结构的猜测,并不能准确传达其在特定语境中的含义。因此,对于“wahyurudiyan”,最准确的翻译可能需要依赖于其出现的具体语境或文化背景
🤝(握手) 为支持做出贡献
- 帮助他人在讨论中回答问题
- 改进文档修复文档问题
- 分享示例提供使用示例
- 报告错误帮助提高稳定性
📜 许可证
这个项目遵循MIT许可证授权——详见 许可证 详情请参阅文件。
📋(清单/待办事项列表) 许可证概要
- ✅ 商业用途用于商业项目
- ✅ 修改修改源代码
- ✅ 分配;分布分发您的修改内容
- ✅ 表示“正确”或“对”。 私人使用私下使用,不对外披露
- ❌(表示错误或不正确) 责任不提供保修或承担责任
- ❌(这个符号本身在中文中没有直接对应的翻译,它通常表示“错误”或“取消”的意思,但在这里作为单独的符号,可以理解为“错误”或“不正确”) 商标未经许可,不得使用商标
📚 更新日志
🎉(庆祝、欢呼的符号,无直接对应中文翻译,可表达为“庆祝”或根据语境用“欢呼”等词汇替代) v1.2.0(版本1.2.0) (当前)
- ✨ 专业建筑采用整洁架构进行彻底重构
- 🧪 翻译成中文是“🧪(实验/试管等,具体含义需根据上下文确定)”。不过,通常我们不会直接翻译这个表情符号,而是根据其常见用法来理解,比如它可能代表实验、化学实验、试管等意象。如果要在中文中表达类似的意思,可以简单地说“🧪(表示实验或试管等)”。但更自然的表达还是根据具体语境来解释这个符号的含义。 综合测试增加了广泛的单元测试覆盖率
- ⚙️ 通常表示“齿轮”或“设置”等含义,具体翻译可能根据上下文有所不同,但在此处可简化为“齿轮”或保持符号不变(若需具体语境下的翻译,请提供更多上下文)。 配置管理基于环境的配置系统
- 🐳 表示“海豚”或“海豚的叫声”,在中文里可以简单翻译为“海豚”或根据语境用“海豚的叫声”等表述。不过,由于这是一个表情符号,直接使用“🐳”或其对应的中文描述“海豚”或“海豚的叫声”在很多情况下都可以,具体取决于上下文和表达的需要。 Docker 支持多阶段Docker构建与容器化
- 📝(一个记录或笔记的符号,可理解为“笔记”或“记录”) 增强的日志记录具有多个级别的结构化日志记录
- 🔧(扳手/螺丝刀等工具的符号,根据上下文可具体翻译为相应的工具名称) 开发者工具Makefile、代码检查(或“linting”)和构建自动化
- 📚 书籍或学习资料的符号,可译为“书本”或“学习资料”。在具体语境中,可根据需要选择更贴切的翻译。 文档全面的文档和示例
🚀 火箭或快速前进的象征(无具体文字含义,仅为表情符号) 版本1.1.0
- 🔧 修理工具或螺丝刀的符号(具体含义可能根据上下文有所不同,但通常代表与修理或工具相关的事物) 错误修复修复了容器列表显示问题
- 📊 表格/数据图表 演出响应时间得到改善
- 🔐(锁形符号,常用于表示保密、安全或需要密码解锁的含义) 安全增强的输入验证
- 📝(一个带有笔的方框图标,常用来表示笔记或待办事项) 文档改进的API文档
🎯(瞄准目标) 版本1.0.0
- 🎉 初始发布基本的Docker操作
- 🔌(电源插头) MCP协议核心MCP服务器实现
- 🐳 这个表情符号在中文中通常被解释为“鲸鱼”或“小鲸鱼”,它形象地描绘了一只小鲸鱼的样子,常用于表达可爱、萌趣或轻松愉快的氛围。 Docker 集成镜像和容器列表
- 📦 箱子/包裹 编曲支持基本的Docker Compose部署
🙏 致谢
🌟 特别感谢
- MCP Go - 卓越的MCP协议实现
- **** - 强大的Docker客户端库
- 编写Go代码 - 支持Docker Compose
- Logrus(注:Logrus是一个用于Go语言的日志库,直接翻译可能无具体含义,但在此保留原英文以指明其专有名词性质) - 结构化日志记录库
🤝(握手) 贡献者
- 所有为改进此项目做出贡献的贡献者
- Go语言社区,汇聚优秀工具与库
- Docker团队,打造卓越的容器技术
- MCP协议标准化社区
📖 书籍 灵感
- 《Clean Architecture》原则,由Robert C. Martin提出
- Go语言的最佳实践和惯用模式
- 企业软件设计模式
- DevOps与容器化最佳实践
______________________________________________________________________
⭐ 如果你觉得这个项目有帮助,请给它点赞!
🚀 开始使用 • 📖 文档 • 🤝 贡献/参与 • 📞 支持
由...用心打造 ❤️ 瓦尤·R·萨普特拉
