VSCode 的 Dev Container 配置 Docker 容器中运行 Claude Code
status
Published
type
Post
slug
claude-code-in-docker-by-vscode-devcontainer
date
Jul 13, 2025
tags
Docker
Config
AI
summary
文章记录了在 Docker 容器中运行 AI Coding Agent(如 Claude Code)以提高安全性的方法。由于 AI Agent 可能存在绕过安全限制执行危险操作的风险,文章强调了沙盒(Sandbox)的重要性,并介绍了如何利用 VSCode 的 Dev Container 配置 Docker 环境来隔离 Claude Code,从而限制其对宿主机的访问和潜在破坏。
最近 AI Coding 工具使用的多,Gemini CLI 免费,Claude Code 高效,用起来体验确实不错。
并且可以两者搭配起来:让 Claude Code 来负责制定编码计划, 拆分计划,并调用 Gemini CLI 利用其超长的上下文来进行迭代处理,最后再由 Claude Code 来完成细节优化以及 Code Review 并修复 BUG。
安全隐患
工具用起来一时爽,但是这样直接在设备上运行一个可以控制整个操作系统、访问完整文件系统的 AI Agent 还是有风险的。
虽然这类工具会在每次执行操作前进行询问批准确认(这种每次都审核确认的方案确实有效),但人总会有误操或者想偷懒的时候,或者是图省事直接用 YOLO(You Only Look Once)模式完全交给 AI Agent,这些场景下未知命令/脚本/代码的执行就带来了一些安全隐患,难免会出问题。
比如下面这篇帖子中就提到了 Claude 模型能够绕过用户设置的命令黑名单,通过创建并运行脚本来执行被禁止的命令,例如
rm
。Sandbox
随着我们给到 AI 模型 / AI Agent 的权限越来越大,相应的所面临的像上文提及的安全风险和攻击手段也会越来越多, Sandbox 自然而然地成为 AI Agent 发展中一个重要的项目。
Gemini CLI 中就有 Sandbox 相关的配置项,其中明确提到 Sandbox 功能用于隔离潜在危险操作,提升安全性和环境一致性。
如何创建更高效安全的适用于 AI Agent 的 Sandbox 环境此处不做展开。
当前为了隔离限制 AI Agent,Docker 就是最直接的选择。把这些 AI Agent 全部放进容器内,使其只能访问到容器内部以及手动挂载上去的文件,而且它也无法对宿主机造成破坏,顶多就是容器异常而停止运行。
Docker & VSCode
下面是基于 VSCode 的 Dev Container 来配置 Docker 容器的记录,简短且简单。
mkdir -p ~/work-dir/claude-code/.devcontainer touch devcontainer.json
先创建一个文件夹,之后这个文件夹会被作为 Claude Code 和项目的根目录。再在此文件夹下创建一个名为
.devcontainer
的文件夹,并在其中创建一个 devcontainer.json
文件。devcontainer.json
文件内容如下(以 Golang 项目为例,采用了 go 的基础镜像):{ "name": "Claude Code Dev Container", "image": "mcr.microsoft.com/devcontainers/go:1.24", "features": { "ghcr.io/devcontainers/features/node:1": { "version": "lts" } }, "postCreateCommand": "npm install -g @anthropic-ai/claude-code", "customizations": { "vscode": { "extensions": [ "golang.Go" ] } }, "remoteUser": "vscode" }
在 VSCode 中打开
~/work-dir/claude-code
目录,点击左下角图标,然后在上方中央弹出的选项中选择 ”Reopen in Container“ 并等待容器启动即可。

一切启动后,可以在终端执行
claude
命令来使用 Claude Code 了。