AI 重塑運維:基于 Spring AI 的 Docker 自然語言管理實踐
MCP (Model Context Protocol) 是一個創(chuàng)新的開源協(xié)議,它的核心目標(biāo)是徹底簡化 AI 應(yīng)用程序的開發(fā)流程。通過提供標(biāo)準(zhǔn)化的通信接口,MCP 在 AI 模型與應(yīng)用程序上下文之間搭建了一座智能橋梁,讓開發(fā)者能夠更加高效地構(gòu)建和部署 AI 驅(qū)動的應(yīng)用。
MCP Docker 服務(wù)器使用指南
圖片
在容器化技術(shù)日益普及的今天,Docker 的管理和運維工作往往需要掌握大量的命令和配置知識。MCP Docker 服務(wù)器應(yīng)運而生,它是一個革命性的工具,能讓你通過自然語言來管理 Docker 容器,大大降低了使用門檻。
通過 MCP Docker 服務(wù)器,你可以用日常對話的方式來完成復(fù)雜的容器管理任務(wù)。例如,你只需要用自然語言告訴 AI:"啟動一個 Nginx 容器并映射到 8080 端口,掛載指定目錄的靜態(tài)文件",AI 就能自動完成所有必要的部署步驟,包括:
- 拉取合適的鏡像
 - 配置端口映射
 - 設(shè)置目錄掛載
 - 啟動并管理容器
 
這種方式不僅大大簡化了 Docker 的使用流程,還能幫助團隊提高工作效率,減少人為錯誤。無論你是 Docker 新手還是經(jīng)驗豐富的運維人員,MCP Docker 服務(wù)器都能讓你的容器管理工作變得更加輕松自如。
Spring AI 與 Docker 集成
Spring AI 提供了強大的 MCP 集成能力,讓開發(fā)者能夠輕松地將 AI 能力引入到 Docker 容器管理中。
環(huán)境準(zhǔn)備
- 安裝 uv
 
# 筆者這里使用 mac , 如果Windows的話去搜索一下安裝就行啦
brew install uv- 下載 mcp-docker-server 插件
 
git clone https://github.com/ckreiling/mcp-server-docker.git創(chuàng)建客戶端項目
首先需要在項目中添加相關(guān)依賴:
<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-XXXMCP Docker 客戶端實現(xiàn)
以下是一個使用 Spring AI 和 MCP 來管理 Docker 容器的示例實現(xiàn):
@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 的靜態(tài)頁面";
        System.out.println("執(zhí)行命令: " + command);
        System.out.println("AI 響應(yīng): " + 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 服務(wù)器,指向 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 服務(wù)初始化狀態(tài): " + init);
    return mcpClient;
}
圖片
執(zhí)行日志示例
以下是一個完整的執(zhí)行過程示例,展示了如何使用自然語言命令來管理 Docker 容器:
# 1. 執(zhí)行自然語言命令
執(zhí)行命令: 啟動一個 Nginx 容器并映射到 8888 端口,并掛載 /Users/lengleng/work/open/pig-ui/docker/dist 的靜態(tài)頁面
# 2. 系統(tǒng)檢查現(xiàn)有容器
發(fā)現(xiàn)沖突: 容器名稱 "/nginx_container" 已被容器 "3f20f2720263..." 使用
狀態(tài): 系統(tǒng)自動處理沖突,移除舊容器
# 3. 創(chuàng)建新容器
容器ID: db72b87c2069...
容器名稱: nginx_container
狀態(tài): 創(chuàng)建成功
# 4. 啟動容器
狀態(tài): 運行中
端口映射: 80 -> 8888
目錄掛載: /Users/lengleng/work/open/pig-ui/docker/dist -> /usr/share/nginx/html
# 5. 最終結(jié)果
? Nginx 容器成功啟動
? 端口 8888 成功映射
? 靜態(tài)文件目錄成功掛載通過這個日志示例,我們可以看到 MCP Docker 服務(wù)器是如何:
- 智能理解自然語言命令
 - 自動處理容器名稱沖突
 - 正確配置端口映射和目錄掛載
 - 完成容器的創(chuàng)建和啟動
 
這種自動化的過程大大簡化了 Docker 容器的管理工作,即使是復(fù)雜的操作也能通過簡單的自然語言命令完成。















 
 
 










 
 
 
 