English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 5|回复: 0

AI 重塑运维:基于 Spring AI 的 Docker 自然语言管理实践

[复制链接]
查看: 5|回复: 0

AI 重塑运维:基于 Spring AI 的 Docker 自然语言管理实践

[复制链接]
查看: 5|回复: 0

349

主题

0

回帖

1057

积分

金牌会员

积分
1057
fdfv232

349

主题

0

回帖

1057

积分

金牌会员

积分
1057
2025-2-9 15:30:56 | 显示全部楼层 |阅读模式
MCP (Model Context Protocol) 是一个创新的开源协议,它的核心目标是彻底简化 AI 应用程序的开发流程。通过提供标准化的通信接口,MCP 在 AI 模型与应用程序上下文之间搭建了一座智能桥梁,让开发者能够更加高效地构建和部署 AI 驱动的应用。
MCP Docker 服务器使用指南

图片
在容器化技术日益普及的今天,Docker 的管理和运维工作往往需要掌握大量的命令和配置知识。MCP Docker 服务器应运而生,它是一个革命性的工具,能让你通过自然语言来管理 Docker 容器,大大降低了使用门槛。
通过 MCP Docker 服务器,你可以用日常对话的方式来完成复杂的容器管理任务。例如,你只需要用自然语言告诉 AI:"启动一个 Nginx 容器并映射到 8080 端口,挂载指定目录的静态文件",AI 就能自动完成所有必要的部署步骤,包括:

  • 拉取合适的镜像
  • 配置端口映射
  • 设置目录挂载
  • 启动并管理容器
这种方式不仅大大简化了 Docker 的使用流程,还能帮助团队提高工作效率,减少人为错误。无论你是 Docker 新手还是经验丰富的运维人员,MCP Docker 服务器都能让你的容器管理工作变得更加轻松自如。
Spring AI 与 Docker 集成

Spring AI 提供了强大的 MCP 集成能力,让开发者能够轻松地将 AI 能力引入到 Docker 容器管理中。
环境准备


  • 安装 uv
# 笔者这里使用 mac , 如果Windows的话去搜索一下安装就行啦brew install uv

  • 1.
  • 2.






  • 下载 mcp-docker-server 插件
git clone https://github.com/ckreiling/mcp-server-docker.git

  • 1.





创建客户端项目

首先需要在项目中添加相关依赖:
                        org.springframework.ai            spring-ai-bom            1.0.0-M5            pom            import                        org.springframework.boot        spring-boot-starter                org.springframework.ai        spring-ai-openai-spring-boot-starter                org.springframework.experimental        spring-ai-mcp        0.4.1   

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.





配置文件

笔者这里使用 deepseek v3 模型,只需要在 application.properties 中添加以下配置:
spring.ai.openai.chat.options.model=deepseek-chatspring.ai.openai.base-url=https://api.deepseek.comspring.ai.openai.api-key=sk-XXX

  • 1.
  • 2.
  • 3.





MCP Docker 客户端实现

以下是一个使用 Spring AI 和 MCP 来管理 Docker 容器的示例实现:
@Beanpublic CommandLineRunner dockerCommands(ChatClient.Builder chatClientBuilder,                                        List functionCallbacks,                                        ConfigurableApplicationContext context) {    return args -> {        var chatClient = chatClientBuilder                .defaultFunctions(functionCallbacks.toArray(new McpFunctionCallback[0]))                .build();        // 示例:使用自然语言管理 Docker 容器        String command = "启动一个 Nginx 容器并映射到 8888 端口 ,并挂载 /Users/lengleng/work/open/pig-ui/docker/dist 的静态页面";        System.out.println("执行命令: " + command);        System.out.println("AI 响应: " + chatClient.prompt(command).call().content());        context.close();    };}@Beanpublic List functionCallbacks(McpSyncClient mcpClient) {    return mcpClient.listTools(null)            .tools()            .stream()            .map(tool -> new McpFunctionCallback(mcpClient, tool))            .toList();}@Bean(destroyMethod = "close")public McpSyncClient mcpClient() {    // 配置 Docker MCP 服务器,指向 mcp-server-docker 插件的路径    var dockerParams = ServerParameters.builder("uv")            .args("--directory", "/Users/lengleng/Downloads/mcp-server-docker", "run", "mcp-server-docker")            .build();    var mcpClient = McpClient.using(new StdioClientTransport(dockerParams))            .requestTimeout(Duration.ofSeconds(30))            .sync();    var init = mcpClient.initialize();    System.out.println("Docker MCP 服务初始化状态: " + init);    return mcpClient;}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.





图片
执行日志示例

以下是一个完整的执行过程示例,展示了如何使用自然语言命令来管理 Docker 容器:
# 1. 执行自然语言命令执行命令: 启动一个 Nginx 容器并映射到 8888 端口,并挂载 /Users/lengleng/work/open/pig-ui/docker/dist 的静态页面# 2. 系统检查现有容器发现冲突: 容器名称 "/nginx_container" 已被容器 "3f20f2720263..." 使用状态: 系统自动处理冲突,移除旧容器# 3. 创建新容器容器ID: db72b87c2069...容器名称: nginx_container状态: 创建成功# 4. 启动容器状态: 运行中端口映射: 80 -> 8888目录挂载: /Users/lengleng/work/open/pig-ui/docker/dist -> /usr/share/nginx/html# 5. 最终结果✅ Nginx 容器成功启动✅ 端口 8888 成功映射✅ 静态文件目录成功挂载

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.





通过这个日志示例,我们可以看到 MCP Docker 服务器是如何:

  • 智能理解自然语言命令
  • 自动处理容器名称冲突
  • 正确配置端口映射和目录挂载
  • 完成容器的创建和启动
这种自动化的过程大大简化了 Docker 容器的管理工作,即使是复杂的操作也能通过简单的自然语言命令完成。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

349

主题

0

回帖

1057

积分

金牌会员

积分
1057

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-10 15:50 , Processed in 0.772495 second(s), 30 queries .

Powered by 智能设备

©2025

|网站地图