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

MCP (Model Context Protocol) 是一个创新的开源协议,它的核心目标是彻底简化 AI 应用程序的开发流程。 通过提供标准化的通信接口,MCP 在 AI 模型与应用程序上下文之间搭建了一座智能桥梁,让开发者能够更加高效地构建和部署 AI 驱动的应用。 MCP Docker 服务器使用指南 图片在容器化技术日益普及的今天,Docker 的管理和运维工作往往需要掌握大量的命令和配置知识。

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
  • 下载 mcp-docker-server 插件
复制
git clone https://github.com/ckreiling/mcp-server-docker.git

创建客户端项目

首先需要在项目中添加相关依赖:

复制
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.0.0-M5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.experimental</groupId>
        <artifactId>spring-ai-mcp</artifactId>
        <version>0.4.1</version>
    </dependency>
</dependencies>

配置文件

笔者这里使用 deepseek v3 模型,只需要在 application.properties 中添加以下配置:

复制
spring.ai.openai.chat.options.model=deepseek-chat
spring.ai.openai.base-url=https://api.deepseek.com
spring.ai.openai.api-key=sk-XXX

MCP Docker 客户端实现

以下是一个使用 Spring AI 和 MCP 来管理 Docker 容器的示例实现:

复制
@Bean
public CommandLineRunner dockerCommands(ChatClient.Builder chatClientBuilder,
                                        List<McpFunctionCallback> 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();
    };
}

@Bean
public List<McpFunctionCallback> 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;
}

图片图片

执行日志示例

以下是一个完整的执行过程示例,展示了如何使用自然语言命令来管理 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 成功映射
✅ 静态文件目录成功挂载

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

  1. 智能理解自然语言命令
  2. 自动处理容器名称冲突
  3. 正确配置端口映射和目录挂载
  4. 完成容器的创建和启动

这种自动化的过程大大简化了 Docker 容器的管理工作,即使是复杂的操作也能通过简单的自然语言命令完成。

相关资讯

大模型AI运用——AgentScope

随着人工智能(AI)技术的飞速发展,其在各行各业的应用越来越广泛,尤其是在IT运维领域,AI的应用正逐渐改变着传统的工作模式。 本文将讲述如何在我们本地来部署一个我们自己的ai小助手。     文中所运用的工具AgentScope:一款全新的Multi-Agent框架,专为应用开发者打造,提供高易用、高可靠的编程体验,支持纯Python编程,内置丰富的API。

知乎直答:AI 搜索产品从 0 到 1 实践探索

一、知乎直答产品介绍知乎直答是具有强社区属性的通用 AI 搜索产品,但并非社区版 AI 搜索。 知乎直答具有以下几大优势:认真专业:与知乎专注专业内容生产的调性相符,严格把控参考来源与质量,确保回答认真且专业。 连接创作者:可在使用中关注、与创作者交流互动获取专业见解。

o3被曝成绩「造假」,60多位数学泰斗集体被耍!OpenAI暗中操控,考卷提前看光

不久前,OpenAI在「圣诞12连更」中发布的最强推理模型「o3」,毫无疑问地惊艳了所有人。 尤其是对于新近发布的数学基准FrontierMath,其准确率相比o1直接翻了12倍。 图片要知道FrontierMath可是Epoch AI联合六十余位全世界的数学家,其中包括教授、IMO命题人、菲尔兹奖获得者,共同推出的。