现在的 AI 编程助手写代码、提 PR 都很溜,但一旦容器挂了、网络不通,开发者还是得一头扎进日志里手动排查。Docker 刚刚正式发布了集成在 Docker Desktop 里的 AI Agent——Gordon,专门来填这个坑:它能读懂你的容器环境,主动提出修复建议,甚至直接动手执行操作。
代码写得快,容器排障慢的断层
AI 提升了编码效率,但这股红利在应用部署和运行阶段突然断了。容器环境天然是黑盒:端口冲突、镜像构建失败、依赖缺失、Compose 网络拓扑错乱……这些问题往往不在代码逻辑本身,而是藏在宿主机与容器的交互细节里。过去排查这些问题,意味着反复敲 docker logs、docker inspect,在 StackOverflow 上找零散的线索。
Gordon 的切入点就在这里。它不是另一个帮你写 Dockerfile 的代码生成器,而是坐在 Docker Desktop 里、拥有完整环境上下文的运维级 Agent。
感知、建议、执行:Gordon 的三板斧
Gordon 的能力闭环可以拆成三步:
- 感知环境:它直接挂载在 Docker Desktop 上,能实时读取容器状态、日志流、Compose 配置和本地镜像信息。你不需要把报错信息手动贴给它,它自己就知道哪几个容器没跑起来。
- 提出修复建议:基于感知到的上下文,Gordon 会分析根因。比如它发现某个服务 CrashLoopBackOff,会去翻日志定位到是数据库连接池耗尽,然后给出具体的参数调整建议。
- 采取行动:最硬核的一点,Gordon 不只是动嘴,它还能动手。在获得授权后,它可以直接修改
docker-compose.yml、重启服务、或者重新构建镜像,把修复闭环走完。
实战演练:用 Gordon 处理一个典型的启动失败
为了直观感受 Gordon 的介入方式,我们可以故意制造一个常见的容器启动故障。下面是一个存在依赖缺失问题的 Python Web 服务配置。
先准备一个会报错的简单项目。创建 app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Gordon's test container!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
以及 requirements.txt:
flask==3.0.0
接着写一个有 Bug 的 Dockerfile(故意漏掉了安装依赖的步骤):
FROM python:3.9-slim
WORKDIR /app
COPY . .
# 这里故意漏掉了 RUN pip install -r requirements.txt
CMD ["python", "app.py"]
配上 docker-compose.yml:
services:
web:
build: .
ports:
- "5000:5000"
在终端运行 docker compose up,容器必然启动失败,日志里会抛出经典的 ModuleNotFoundError: No module named 'flask'。
此时,如果你在 Docker Desktop 中启用了 Gordon,不需要自己去翻日志敲命令,你可以直接向 Gordon 描述现象:
"我的 web 服务启动失败了,帮我看看怎么回事。"
Gordon 的典型处理流程会是这样:
- 感知:它检查
web容器状态,发现进程退出,提取日志中的ModuleNotFoundError。 - 建议:它对比当前目录的文件,发现
requirements.txt存在但Dockerfile中没有安装步骤,给出补全建议:dockerfile FROM python:3.9-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt # Gordon 建议补上这行 CMD ["python", "app.py"] - 执行:询问你是否授权修改。你确认后,Gordon 直接改写 Dockerfile,并自动在后台执行:
bash docker compose down docker compose build --no-cache docker compose up -d
几秒钟后,服务恢复正常。整个排障和修复过程,你只需要做一次确认。
落地建议与信任边界
把一个 AI Agent 引入本地开发环境并赋予执行权限,不是没有风险的事。实际使用时,建议把握几个原则:
- 从只读建议起步:初期可以关闭 Gordon 的自动执行权限,只让它做感知和建议。等你对它的判断准确度建立信任后,再逐步开放修改配置文件和重启容器的权限。
- 复杂网络问题仍是短板:Gordon 目前对单服务配置错误、依赖缺失、端口冲突这类问题处理得很利索,但如果涉及多服务间的微服务路由错乱、内核级网络调优,它的建议可能仍然偏保守,需要你结合
iptables或底层网络插件知识二次判断。 - 别丢掉底层排查能力:Agent 能加速日常排障,但理解容器底层机制的原理依然必要。Gordon 帮你省下的是重复劳动的时间,而不是替你承担架构设计的责任。
Gordon 的正式发布,标志着 Docker 从单纯的容器运行时工具,开始向智能化的开发者体验平台演进。对于每天在容器里打转的开发者来说,少敲几次 docker logs,少查几次 StackOverflow,就是最实在的效率提升。