1. 项目概述:当AI助手学会管理Docker

如果你和我一样,日常开发工作流里塞满了Docker容器——前端、后端、数据库、缓存服务,每个项目都有一套自己的编排。那么你肯定也熟悉这个场景:正在IDE里专注地写一段逻辑,突然需要确认某个微服务是否启动正常,或者想看看后端API的实时日志。这时候,你的手会不自觉地离开键盘,去摸鼠标,或者按 Cmd+T 打开一个新的终端标签页,敲入 docker ps ,找到容器ID,再敲 docker logs -f container_id 。这一套操作下来,思路早就断了。

这不仅仅是切换工具的麻烦,更是 上下文切换的成本 。我们的大脑从“深度编码模式”切换到“系统运维模式”,再切换回来,效率损耗巨大。而 mcp-server-docker 这个项目,就是为了解决这个痛点而生的。它是一个实现了 Model Context Protocol (MCP) 的服务器,简单来说,它让你能直接用自然语言命令你的AI编程助手(比如Claude、Cursor的AI)去操作你本地的Docker环境。

想象一下,你可以在Claude Desktop的聊天框里直接输入:“帮我列出所有正在运行的容器,并告诉我哪个占内存最多”,或者对Cursor的AI说:“把 backend 容器的最后50行日志给我看看,我怀疑有个请求卡住了”。你不用离开你的编辑器,也不用记忆复杂的Docker CLI命令和参数,就像有一个懂DevOps的助手随时待命。这个项目的核心价值,就是把Docker运维这个“体力活”无缝集成到你的AI增强工作流中,让你真正实现“动口不动手”的容器管理。

2. MCP与Docker:技术栈的深度融合解析

要理解这个项目为什么有用,得先拆解它的两大技术支柱:Docker和MCP。

2.1 Docker:现代开发的基石与痛点

Docker通过容器化技术,解决了“在我机器上能跑”的经典难题。它把应用及其所有依赖(库、环境变量、配置文件)打包成一个标准化的镜像,然后在任何地方以容器形式运行,保证环境一致性。对于开发者,Docker Compose、Dockerfile已经成为项目标配。我们通过命令行与Docker守护进程交互,执行诸如 docker run , docker build , docker logs 等操作。

然而,CLI操作存在几个固有短板:

  1. 命令记忆负担 :虽然常用命令就那几个,但各种参数( -it , -p , -v , --rm , --network )组合起来容易记混,尤其是排查问题时需要的一些不常用命令。
  2. 输出信息过载 docker ps -a 的输出格式固定,当容器很多时,快速定位某个特定服务的信息需要肉眼扫描。 docker stats 的数据是流式的,不方便快速抓取某一时刻的快照。
  3. 交互流程割裂 :运维操作和编码、调试操作发生在不同的工具(终端 vs. IDE)中,形成了工作流上的断层。

2.2 Model Context Protocol (MCP):AI的能力扩展协议

MCP是Anthropic提出的一种开放协议,旨在为大型语言模型(LLM)提供一种标准化的方式来连接和使用外部工具、数据源。你可以把它理解为AI模型的“插件系统”或“驱动协议”。一个MCP服务器(Server)对外暴露一系列定义好的工具(Tools)和资源(Resources),而MCP客户端(Client,如Claude Desktop、Cursor)则负责调用这些工具,并将结果以结构化的方式提供给AI模型。

这个协议的关键在于 标准化 安全性 。标准化意味着任何兼容MCP的AI客户端理论上都能使用任何MCP服务器。安全性则体现在:MCP服务器运行在本地,处理敏感操作(如访问你的Docker socket);AI客户端只是发起请求,并不直接拥有执行权限,权限边界清晰。

mcp-server-docker 就是一个标准的MCP服务器实现。它封装了Docker Engine API的常用功能,将其转化为MCP协议定义的工具。当你在AI客户端里提出一个关于Docker的请求时,背后的流程是这样的:

  1. AI模型理解你的自然语言请求(如“重启nginx”)。
  2. AI客户端(如Cursor)检查已配置的MCP服务器,发现 mcp-server-docker 提供了 restart_container 工具。
  3. 客户端根据协议构造一个JSON-RPC请求,调用该工具,并传入必要的参数(如容器名)。
  4. mcp-server-docker 服务器收到请求,通过本地Docker Socket调用真正的Docker API执行重启操作。
  5. 服务器将执行结果(成功或错误信息)封装成JSON-RPC响应返回给客户端。
  6. 客户端将结果传递给AI模型,模型再以友好的自然语言格式呈现给你。

整个过程,你感知到的就是和AI对话,而背后是标准协议在可靠地执行具体任务。

2.3 为什么选择这个技术组合?

将Docker管理通过MCP暴露给AI,是一个“1+1>2”的选择:

  • 降低认知负荷 :你不需要回忆命令语法,只需要描述意图。“查看日志”对应 container_logs ,“检查资源”对应 container_stats 。AI理解意图,MCP服务器负责精确执行。
  • 提升操作精度 :直接操作CLI可能因手误打错容器ID或命令。通过AI中转,你可以用容器名、镜像名甚至描述性语言来指代目标,AI会帮你找到最匹配的那个,减少了人为错误。
  • 探索性交互 :你可以进行模糊查询或复杂查询。例如,“找出所有今天创建的容器”或“哪个容器的日志里最近出现了‘ERROR’关键词”。虽然当前工具集可能不直接支持,但AI可以组合多次工具调用来逼近答案,这比手动写一堆 grep awk 命令要直观得多。

3. 核心工具详解与实战应用场景

mcp-server-docker 目前提供了十多个工具,覆盖了日常开发中80%的Docker操作需求。下面我们深入每一个工具,看看它们具体能做什么,以及在实际开发中如何应用。

3.1 容器生命周期管理工具

这是最常用的一组工具,对应Docker的日常启停运维。

list_containers :你的容器全景仪表盘 这个工具相当于 docker ps -a ,但输出是结构化的JSON数据,AI可以更好地理解和呈现。你可以问:“所有容器状态如何?”AI会调用此工具,并可能以表格形式反馈,高亮显示 Running Exited Paused 等状态,并附带容器ID、名称、使用的镜像、创建时间、映射的端口等关键信息。一个高级用法是让AI进行过滤分析,比如“只列出状态是 Exited 的容器”,AI会在获取全部列表后,在本地进行过滤和总结。

start_container / stop_container / restart_container :一键操作 这组工具封装了 docker start/stop/restart 。其价值在于 便捷性和准确性 。比如你有一个名为 project-api-staging 的容器,在终端里你可能需要复制其完整名称或ID。而通过AI,你可以说“重启那个staging环境的API容器”,AI通过 list_containers 找到匹配项,然后调用 restart_container 。这避免了因容器名复杂而导致的输入错误。

实操心得 :对于由 docker-compose 管理的容器组,直接重启单个容器有时可能导致依赖问题。更佳实践是,通过 exec_command 工具先执行一个优雅关闭的命令(如发送 SIGTERM ),或者直接使用Docker Compose CLI。这个工具更适合管理独立的、无复杂依赖的容器。

remove_container :清理空间 对应 docker rm 。当容器停止后,需要清理磁盘空间时使用。你可以说“删除所有已停止的容器”。AI可以组合操作:先 list_containers 找出所有 Exited 状态的容器,然后对每一个循环调用 remove_container 务必注意 :在让AI执行批量删除前,最好先让它列出将要删除的容器清单让你确认,防止误删重要数据容器。

3.2 洞察与诊断工具

这组工具用于深入了解容器内部状态,是调试和性能排查的利器。

container_logs :实时问题追踪器 这是使用频率可能最高的工具之一,对应 docker logs 。它的优势在于 交互的灵活性 。你可以提出非常具体的请求:

  • “给我看 redis 容器最近20条日志。”
  • “从 webapp 容器的日志里找一下有没有 500 状态码的错误,看最近10条。”
  • database 容器的日志从今天早上8点开始有什么异常吗?”

AI会调用该工具,并可以设定参数如 tail (获取最后N行)、 since (获取某个时间点之后的日志)、 timestamps (是否包含时间戳)。获取日志后,AI还能进行初步分析,比如高亮错误关键词、总结日志模式,这比在终端里肉眼扫描要高效得多。

container_stats :性能监控窗口 对应 docker stats ,但提供的是某一时刻的快照,而非持续流。这对于快速检查资源瓶颈非常有用。你可以问:“我的 postgres 容器现在CPU和内存占用多少?”或者“哪个容器最耗内存?”。AI获取数据后,可以直观地告诉你具体数值,甚至计算内存使用百分比,帮你快速定位资源热点。

exec_command :容器内的瑞士军刀 这是功能最强大的工具之一,对应 docker exec 。它允许你在运行中的容器内部执行任意命令。应用场景极其广泛:

  • 调试 :“在 backend 容器里执行 cat /etc/os-release ,看看是什么Linux发行版。”
  • 检查文件 :“列出 /app/logs 目录下今天生成的日志文件。”
  • 运行诊断工具 :“在 app 容器里用 curl 检查一下内部健康检查端点 localhost:8080/health 是否正常。”
  • 数据库操作 :“连接到 mysql 容器,执行 SHOW PROCESSLIST; 看看当前连接。”

重要警告 exec_command 能力强大,也意味着风险。避免让它执行破坏性命令(如 rm -rf / ),或涉及敏感信息的命令(如 cat /etc/passwd )。虽然MCP服务器运行在本地,但最好保持“最小权限”思维,只执行必要的诊断命令。

3.3 镜像管理工具

list_images remove_image 对应 docker images docker rmi 。主要用于管理本地镜像仓库,清理磁盘。你可以让AI“列出所有镜像,按大小排序”,或者“删除所有 <none> 标签的悬空镜像”。对于镜像清理,AI可以帮你识别出没有被任何容器使用的中间层镜像,并提出清理建议。

4. 从零开始:安装、配置与深度集成指南

了解了工具能做什么,接下来我们一步步把它装到你的开发环境里,并和不同的AI客户端深度集成。

4.1 环境准备与前置检查

在开始之前,确保你的系统满足以下条件:

  1. Node.js环境 :该项目是一个Node.js程序。你需要安装Node.js(建议版本16或以上)和npm。你可以通过 node --version npm --version 来检查。
  2. Docker守护进程 :Docker必须正在运行。打开终端,执行 docker version 。如果看到Client和Server的版本信息,说明Docker运行正常。如果遇到权限错误(如 Got permission denied while trying to connect to the Docker daemon socket ),你需要将当前用户加入 docker 用户组(Linux/macOS)或以管理员身份运行(Windows)。
  3. Docker Socket访问 mcp-server-docker 默认通过Unix socket ( /var/run/docker.sock ) 或Windows命名管道与Docker通信。确保你的用户有该socket文件的读写权限。

4.2 全局安装与快速测试

最快捷的体验方式是使用 npx ,它允许你直接运行npm包而不需要全局安装。打开一个终端,运行:

npx -y mcp-docker-server

-y 参数会自动对任何提示回答“yes”。运行后,你会看到服务器启动的日志,类似:

MCP Docker Server started.
Tools available: list_containers, container_logs, ...
Transport: stdio

这表示服务器已就绪,正在通过标准输入输出(stdio)等待MCP客户端的连接。你可以按 Ctrl+C 停止它。这只是临时测试,真正的威力在于与AI客户端集成。

4.3 与Claude Desktop集成

Claude Desktop是Anthropic官方的Claude客户端,对MCP的支持非常原生和友好。

  1. 定位配置文件 :Claude Desktop的MCP配置文件通常位于以下路径:

    • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows : %APPDATA%\Claude\claude_desktop_config.json
    • Linux : ~/.config/Claude/claude_desktop_config.json 如果文件或目录不存在,手动创建即可。
  2. 编辑配置文件 :用你喜欢的文本编辑器(如VS Code、Vim)打开这个JSON文件。将 mcp-server-docker 的配置添加进去。如果你的配置文件是空的,就写入完整内容;如果已有其他MCP服务器配置,就在 mcpServers 对象里新增一个。

    {
      "mcpServers": {
        "docker": {
          "command": "npx",
          "args": ["-y", "mcp-docker-server"]
        }
      }
    }
    

    这里, "docker" 是你给这个服务器起的名字,可以自定义,但建议保持简洁。 command 指定为 npx args 是传递给 npx 的参数。

  3. 重启与验证 :保存配置文件后, 完全退出并重新启动Claude Desktop 。这是关键一步,因为配置只在启动时加载。重启后,新建一个对话,你可以尝试问Claude:“你能操作Docker吗?”或者“列出我的Docker容器”。如果配置成功,Claude会回应它已具备Docker相关能力,并可以执行你的命令。

4.4 与Cursor编辑器集成

Cursor是深度集成AI的代码编辑器,其AI助手同样支持MCP,配置方式类似。

  1. 定位配置文件 :在Cursor项目根目录或用户全局配置目录下,存在 .cursor 目录。你需要在其下创建或编辑 mcp.json 文件。全局配置路径通常在你的用户目录下(如 ~/.cursor/mcp.json ),项目级配置则放在具体项目的 .cursor 文件夹内。项目级配置优先级更高。

  2. 编辑配置文件 :配置文件的结构与Claude Desktop略有不同,但内容相似。

    {
      "mcpServers": {
        "docker": {
          "command": "npx",
          "args": ["-y", "mcp-docker-server"]
        }
      }
    }
    
  3. 重启与验证 :保存文件后,重启Cursor。在编辑器内,你可以通过快捷键(通常是 Cmd+K Ctrl+K )唤起AI指令输入框,然后输入Docker相关的自然语言指令进行测试。

4.5 与VS Code及Copilot集成

VS Code通过扩展支持MCP,目前主要是通过 Continue 等扩展或者微软官方Copilot的特定配置。配置路径可能因扩展而异。一种常见的方式是在VS Code的用户设置 ( settings.json ) 或工作区设置中配置。请查阅你所使用的AI扩展的文档,确认其MCP配置的具体格式和位置。其JSON结构可能类似于:

{
  "mcp": {
    "servers": {
      "docker": {
        "command": "npx",
        "args": ["-y", "mcp-docker-server"]
      }
    }
  }
}

4.6 配置进阶:使用全局安装与自定义参数

使用 npx 虽然方便,但每次启动都会有短暂的网络检查或下载延迟(如果本地没有缓存)。对于追求稳定和速度的用户,可以考虑全局安装:

npm install -g mcp-docker-server

安装后,你的配置文件中 command 字段可以改为直接调用全局命令:

{
  "mcpServers": {
    "docker": {
      "command": "mcp-docker-server"
      // 移除了 "args": ["-y", "mcp-docker-server"]
    }
  }
}

此外,如果你需要指定非默认的Docker主机或TCP连接(例如连接远程Docker守护进程),理论上可以通过环境变量 DOCKER_HOST 来配置。但请注意, mcp-server-docker 作为本地工具,主要设计用于连接本地socket,连接远程Docker涉及复杂的安全和网络配置,需谨慎处理。

5. 实战演练:典型开发场景下的高效工作流

理论说再多,不如看实战。下面我结合几个真实的开发场景,展示如何用 mcp-server-docker 提升效率。

5.1 场景一:快速诊断服务启动失败

背景 :你刚用 docker-compose up 启动了一个新的微服务栈,但前端页面无法访问。你需要快速定位问题。

传统方式

  1. 打开终端。
  2. docker ps 查看容器是否都在运行。
  3. 发现 backend 容器状态是 Restarting
  4. docker logs backend 查看日志,发现错误是数据库连接失败。
  5. docker logs database 查看数据库日志。
  6. 可能需要 docker exec -it backend sh 进入容器内部检查环境变量或网络。

AI增强工作流

  1. 在Claude或Cursor的AI对话框中,直接输入:“我的docker-compose服务好像有问题,前端连不上。帮我检查一下所有容器的状态和最近错误。”
  2. AI会依次调用:
    • list_containers :获取所有容器状态,发现 backend 异常。
    • container_logs :获取 backend 容器的最后若干行日志,并分析出“数据库连接被拒绝”的关键错误。
    • (可选) container_logs :获取 database 容器的日志,确认数据库是否正常启动。
    • (可选) exec_command :在 backend 容器中执行 env | grep DB curl database:5432 来检查网络连通性。
  3. AI将上述信息汇总,用自然语言告诉你:“你的 backend 容器启动失败,正在不断重启。从日志看,它无法连接到 database 容器(错误:connection refused)。 database 容器本身是运行状态,但日志显示它还在初始化。建议你检查 backend 的启动命令是否等待了数据库就绪,或者查看 database 容器的日志确认初始化是否完成。”

整个过程,你只描述了一次问题,AI就像一个有经验的运维同事,自动执行了多条诊断命令,并给出了综合性的分析建议。

5.2 场景二:日常开发中的容器管理

背景 :你在开发一个功能,需要频繁重启某个服务来测试代码更改。

传统方式 :反复在终端输入 docker-compose restart service_name docker restart container_name

AI增强工作流 :直接对AI说:“重启 user-service 容器。” 或者更简单:“重启用户服务。” AI识别意图,调用 restart_container 工具完成操作。你甚至可以让它做一些复合操作:“先停止 worker 容器,然后更新代码镜像,再启动它。” AI可以按顺序调用 stop_container ,等待(或提示你执行更新),再调用 start_container

5.3 场景三:性能分析与资源清理

背景 :感觉电脑变卡了,怀疑是Docker容器占用了太多资源。

传统方式 :打开终端,运行 docker stats 盯着滚动的数据看;运行 docker system df 查看磁盘使用;运行 docker image prune 清理镜像。

AI增强工作流

  1. “哪个Docker容器最耗CPU和内存?” AI调用 container_stats 获取所有运行中容器的资源快照,并为你排序、高亮显示资源消耗最高的容器。
  2. “我的Docker磁盘使用情况怎么样?有没有可以清理的?” AI可以调用 list_images list_containers (过滤已停止的),分析出哪些镜像较大且未被使用,哪些容器已停止但未删除,并给出具体的清理建议列表,等你确认后再执行删除操作。

6. 安全考量、局限性与高级技巧

任何能操作你基础设施的工具,安全都是首要考虑因素。同时,了解其边界也能帮助我们更好地使用它。

6.1 安全性深度解析

mcp-server-docker 的安全性建立在几个层面:

  1. 本地执行 :MCP服务器运行在你的本地机器上,所有对Docker API的调用都发生在本地网络环回接口或文件socket上,数据不会离开你的电脑。这与需要将API密钥上传到云端的AI服务有本质区别。
  2. 权限继承 :服务器进程的权限等同于启动它的用户权限。如果你当前用户有权限访问Docker socket(通常需要加入 docker 组),那么它就能执行相应的Docker操作。这意味着, 不要以root用户身份长期运行你的AI客户端或MCP服务器 。遵循最小权限原则,使用普通用户账号。
  3. 工具级控制 :MCP协议本身支持对工具进行更细粒度的权限描述和控制(虽然当前这个服务器实现可能没有启用)。未来的演进可能会允许你配置“只允许查询日志,不允许执行删除操作”这样的策略。
  4. 操作确认 :目前,AI客户端在调用具有“写”风险的操作(如 remove_container , remove_image )时,通常不会二次确认。 这是一个需要你保持警惕的地方 。在发出删除、停止关键服务等指令前,务必明确你操作的对象。一个良好的习惯是,先让AI列出目标,你确认无误后再执行操作。

6.2 当前局限性

认识到局限性,才能避免误用和失望。

  1. 无法替代完整CLI :它封装的是常用操作,并非Docker CLI的100%映射。一些复杂或小众的命令(如 docker build , docker network , docker swarm 相关命令)尚未支持。对于复杂的构建、编排任务,仍需使用终端。
  2. 缺乏复杂流程编排 :它擅长执行单个或简单的顺序操作,但不擅长处理需要复杂条件判断、循环或错误处理的运维脚本。例如,“如果容器A的日志中出现错误X,则重启容器B,并通知我”这样的工作流,目前无法通过一次指令完成。
  3. 状态管理简单 :MCP调用是无状态的。AI模型本身不持久化记忆你之前对容器做了什么(除非在对话上下文中)。复杂的多步骤操作需要你在单次提示中描述清楚,或者依赖AI的上下文理解能力。
  4. 依赖AI的理解能力 :工具的效果很大程度上取决于背后AI模型对自然语言的理解和工具调用的规划能力。如果AI误解了你的意图,可能会调用错误的工具或参数。

6.3 高级使用技巧与优化建议

  1. 使用明确的标识 :在请求中,尽量使用容器的 名称 而非ID。名称更具可读性,且AI更容易准确匹配。例如,说“重启 my-app-backend 容器”比“重启那个ID是a1b2c3的容器”要好得多。
  2. 组合查询与过滤 :你可以提出组合性请求。例如,“列出所有状态是 Exited 且创建时间超过一周的容器”。AI会先获取所有容器列表,然后在本地(或通过多次工具调用)进行过滤和计算,给出结果。
  3. 善用 exec_command 进行深度诊断 :当标准日志不足以定位问题时, exec_command 是你的探针。可以执行 ps aux 查看容器内进程, netstat -tulpn 查看端口监听, df -h 查看容器内磁盘使用, cat /proc/1/environ 查看主进程环境变量(需谨慎)等。
  4. 配置文件版本化管理 :将你的MCP配置文件(如 .cursor/mcp.json )纳入项目的版本控制(例如放在项目根目录)。这样,团队新成员克隆项目后,也能快速获得相同的AI辅助能力配置,提升团队协作体验。
  5. 探索其他MCP服务器 mcp-server-docker 只是MCP生态的一员。还有 mcp-server-filesystem (操作文件)、 mcp-server-github (管理GitHub)等。将它们组合使用,可以让你的AI助手成为一个真正的“全能副驾驶”。

7. 常见问题排查与故障解决

在实际使用中,你可能会遇到一些问题。这里列出一些常见情况及其解决方法。

问题1:AI客户端报告“无法连接到MCP服务器”或“未找到Docker工具”。

  • 检查配置路径 :首先确认配置文件( claude_desktop_config.json , .cursor/mcp.json )是否放在了正确的位置,并且JSON格式正确(可以使用在线JSON校验工具检查)。
  • 重启客户端 :修改MCP配置后, 必须完全退出并重启AI客户端 (Claude Desktop, Cursor等),配置才会被重新加载。
  • 检查命令可用性 :如果你使用的是 npx 命令,确保网络通畅。可以手动在终端运行 npx -y mcp-docker-server ,看能否正常启动服务器。如果使用全局安装,确保 mcp-docker-server 命令在系统的PATH环境变量中。
  • 查看客户端日志 :一些AI客户端(如Claude Desktop)有日志输出功能。查看日志中是否有关于加载MCP服务器的错误信息。

问题2:AI可以列出容器,但执行操作(如重启、查看日志)时失败,提示权限错误或连接错误。

  • Docker守护进程状态 :运行 docker ps 确认Docker守护进程是否正常运行。
  • 用户权限 :这是最常见的问题。运行 groups 命令查看当前用户是否在 docker 组中。如果不在,需要将用户加入该组(Linux/macOS: sudo usermod -aG docker $USER ),然后 注销并重新登录 使组生效。在Windows上,通常需要以管理员身份运行Docker Desktop。
  • Socket文件权限 :检查 /var/run/docker.sock 的文件权限( ls -l /var/run/docker.sock )。当前用户需要有读写权限。

问题3: exec_command 执行失败,提示“容器未运行”或“命令不存在”。

  • 容器状态 :确保目标容器处于运行中( Up )状态。 exec 命令只能在运行中的容器内执行。
  • 命令路径 :容器内可能没有你指定的命令。例如,一个基于Alpine Linux的极简镜像可能没有 bash ,只有 sh 。尝试使用更基本的命令或指定完整路径。你可以先让AI执行 which ls echo $PATH 来探明容器内的环境。

问题4:AI的理解出现偏差,调用了错误的工具或参数。

  • 指令更清晰 :尽量使用更精确的描述。例如,不说“看看那个服务的输出”,而说“获取容器名为 nginx-proxy 的最后100行日志”。
  • 提供上下文 :如果对话中之前提到过某个容器,后续指令可以更简略。AI会利用上下文。
  • 手动指定工具 :一些高级AI客户端允许你手动指定使用哪个MCP工具。如果自然语言效果不佳,可以尝试直接告诉AI:“请使用 list_containers 工具。”

问题5:性能感觉有延迟。

  • 启动延迟 :如果使用 npx ,首次运行或隔段时间后运行,可能会从网络下载包,导致延迟。考虑全局安装 ( npm install -g mcp-docker-server ) 以消除此延迟。
  • AI处理时间 :复杂的请求可能需要AI进行多步思考和多次工具调用,这会花费一些时间。对于简单的查询,速度通常很快。

这个工具代表的是一种范式转变:从记忆命令、手动操作,转向描述意图、让智能代理去执行。它不会取代你对Docker原理的理解,但能极大减少那些重复、琐碎的交互成本。我个人最深的体会是,它把我从终端和IDE之间频繁的 Alt+Tab 切换中解放了出来,让“思考-编码-调试”这个循环变得更紧密、更流畅。如果你每天都要和Docker打交道,花十分钟配置一下,接下来的开发体验可能会截然不同。

更多推荐