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





























