Docker环境Claude代码工具

提供隔离的Docker环境运行Claude代码工具,支持Docker-in-Docker功能,便于构建和管理Docker镜像。

  • by ExpertVagabond
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 ExpertVagabond/claude-code-docker

使用说明

Claude 代码 Docker 设置

这个Docker设置提供了一个隔离的环境,用于在具备Docker-in-Docker功能的情况下运行Claude Code,使您能够在Claude Code内部构建和管理Docker镜像。

特点/功能

  • 🐳 这个表情符号在中文里通常被翻译为“海豚”或者直接用“🐳”表示,它并没有一个固定的中文翻译,而是根据上下文或使用场景来解释。在社交媒体或聊天中,它可能代表海豚的形象,也可能仅仅是一个可爱的符号。 Docker-in-Docker 支持在Claude Code中构建和运行Docker容器
  • 🔒(锁形符号,通常表示安全、保密或锁定状态) 隔离环境在安全的容器化环境中运行Claude代码
  • ⛓️(锁链的符号,常用来表示束缚、限制或连接) 区块链集成全面支持MCP,兼容通用区块链、ZetaChain、Solana和Sui工具
  • 🤖 表示机器人。 MCP服务器支持连接到任何模型上下文协议服务器
  • 📁 文件夹 持久化工作区您的工作已保存在挂载的工作区目录中
  • ⚡(闪电符号,常用于表示速度、能量或惊喜等含义) 轻松管理用于构建、启动和管理容器的简单脚本
  • 🛡️(盾形符号,常用于表示保护、防御等含义) 安全以非root用户身份运行,拥有适当权限
  • 🔧(扳手,表示修理或工具的意思) 两种模式套接字安装(推荐)或完全的Docker-in-Docker(容器内嵌套容器)

快速入门

1. 设置环境

cd claude-code-docker
cp .env.example .env
# Edit .env and add your CLAUDE_API_KEY

2. 构建并启动

# Build the Docker image
./run.sh build

# Start the container
./run.sh start

# Access the container shell
./run.sh shell

3. 使用Claude代码

一旦进入容器,您就可以正常使用Claude Code:

# Check if Claude Code is working
claude --version

# Start an interactive session
claude

# Run a specific command
claude "Create a simple Node.js web server"

4. 构建Docker镜像

在容器内部,您可以构建Docker镜像:

# Create a simple Dockerfile
echo 'FROM nginx:alpine' > Dockerfile

# Build an image
docker build -t my-nginx .

# List images
docker images

# Run a container
docker run -d -p 8080:80 my-nginx

可用命令

./run.sh build           # Build the Docker image
./run.sh start           # Start container (Docker socket mode)
./run.sh start-dind      # Start container (Docker-in-Docker mode)
./run.sh stop            # Stop containers
./run.sh shell           # Access container shell
./run.sh shell-dind      # Access DinD container shell
./run.sh status          # Show container status
./run.sh logs            # View container logs
./run.sh claude [args]   # Run Claude Code command
./run.sh clean           # Clean up Docker resources
./run.sh help            # Show help

Docker 模式

模式1:Docker套接字挂载(推荐)

此模式挂载主机的Docker套接字,使容器能够使用主机的Docker守护进程:

./run.sh start
./run.sh shell

优点:

  • 启动更快
  • 使用宿主机的 Docker 守护进程
  • 与主机共享图像

缺点:

  • 减少孤立(感)
  • 需要访问Docker套接字

模式2:Docker-in-Docker(完全隔离)

此模式在容器内运行一个完整的 Docker 守护进程:

./run.sh start-dind
./run.sh shell-dind

优点:

  • 完全隔离
  • 自有的 Docker 守护进程
  • 更安全

缺点:

  • 启动较慢
  • 更多资源占用
  • 独立图像存储

目录结构

claude-code-docker/
├── Dockerfile              # Main container definition
├── docker-compose.yml      # Multi-container setup
├── run.sh                  # Management script
├── .env.example            # Environment template
├── .dockerignore           # Docker ignore patterns
├── workspace/              # Your persistent workspace
└── README.md               # This file

环境变量

创建一个 .env 与……一起归档/保存

# Required: Your Claude API key
CLAUDE_API_KEY=your_api_key_here

# Optional: Development settings
NODE_ENV=development
DEBUG=*

端口映射

  • 3000默认的网络服务端口
  • 8080备用网络服务端口
  • 2376Docker 守护进程端口(DinD 模式)

卷挂载(或称为“卷挂载点”)

  • ./workspace:/workspace - 您持续开发的工作空间
  • /var/run/docker.sock:/var/run/docker.sock - Docker 套接字(套接字模式)
  • claude-home:/home/claude - 用户主目录

故障排除

权限问题

如果你在使用 Docker 时遇到权限问题:

# Check if Docker is running
docker ps

# Restart the container
./run.sh stop && ./run.sh start

# Try DinD mode instead
./run.sh start-dind

API密钥问题

确保你的 .env 文件包含有效的Claude API密钥:

# Check your .env file
cat .env

# Test Claude Code
./run.sh claude --version

集装箱问题

# Check container status
./run.sh status

# View logs
./run.sh logs

# Clean restart
./run.sh clean && ./run.sh build && ./run.sh start

安全注意事项

  • 该容器以非root用户身份运行(claude)
  • Docker 套接字挂载需要特权访问权限
  • 考虑在生产环境中使用DinD模式以获得更好的隔离性
  • 永远不要让你的 .env 包含真实API密钥的文件

开发工作流程

  1. 启动环境: ./run.sh build && ./run.sh start
  2. 访问Shell: ./run.sh shell
  3. 使用Claude代码: claude "your request"
  4. 构建 Docker 镜像使用正常 docker 命令
  5. 坚持不懈地工作将文件保存在 /workspace

集成示例

构建一个网页应用

# Inside the container
cd /workspace
claude "Create a Express.js web server with Docker support"
# Claude will create the app and Dockerfile
docker build -t my-web-app .
docker run -p 3000:3000 my-web-app

多容器开发

# Create docker-compose.yml for your app
claude "Create a docker-compose.yml for a Node.js app with Redis"
docker-compose up -d

做出贡献

为了改进这一设置:

  1. 为仓库创建分支(或“克隆仓库”)
  2. 修改Docker配置
  3. 使用与……进行测试 ./run.sh build && ./run.sh start
  4. 提交拉取请求

支持

对于问题:

  • 检查容器日志: ./run.sh logs
  • 验证Docker安装: docker --version
  • 测试Claude API密钥: ./run.sh claude --version