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_KEY2. 构建并启动
# Build the Docker image
./run.sh build
# Start the container
./run.sh start
# Access the container shell
./run.sh shell3. 使用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 helpDocker 模式
模式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-dindAPI密钥问题
确保你的 .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密钥的文件
开发工作流程
- 启动环境:
./run.sh build && ./run.sh start - 访问Shell:
./run.sh shell - 使用Claude代码:
claude "your request" - 构建 Docker 镜像使用正常
docker命令 - 坚持不懈地工作将文件保存在
/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做出贡献
为了改进这一设置:
- 为仓库创建分支(或“克隆仓库”)
- 修改Docker配置
- 使用与……进行测试
./run.sh build && ./run.sh start - 提交拉取请求
支持
对于问题:
- 检查容器日志:
./run.sh logs - 验证Docker安装:
docker --version - 测试Claude API密钥:
./run.sh claude --version
