SCC vs Manual Docker Setup
This guide compares using SCC’s automated Docker management to manually setting up Docker containers for Claude Code.
Quick Comparison
Section titled “Quick Comparison”| Aspect | SCC CLI | Manual Docker |
|---|---|---|
| Setup time | Minutes (scc setup) | Hours to days |
| Configuration | JSON-based org/team profiles | Custom Dockerfiles/scripts |
| Team consistency | Automatic via profiles | Manual enforcement |
| Git safety | Built-in Safety Net plugin | DIY implementation |
| Plugin governance | Org-level allow/block lists | Manual tracking |
| Maintenance | SCC updates handle changes | You maintain scripts |
What SCC Automates
Section titled “What SCC Automates”Container Lifecycle
Section titled “Container Lifecycle”SCC manages container creation, startup, and cleanup:
# SCC handles everythingscc start ~/my-project
# Equivalent manual steps:# 1. Build or pull base image# 2. Create container with correct mounts# 3. Configure environment variables# 4. Start container# 5. Attach to Claude Code process# 6. Handle cleanup on exitVolume Mounts
Section titled “Volume Mounts”SCC configures secure mounts automatically:
scc start ~/my-project# Mounts workspace at correct path# Handles permissions# Isolates from host filesystemManual setup requires specifying all mounts explicitly and handling path translations.
Team Configuration
Section titled “Team Configuration”With SCC, team settings flow automatically:
# Developer runs oncescc setup --org https://company.com/org-config.json
# Gets: approved plugins, MCP servers, network policies, team defaultsManual Docker requires distributing and enforcing configuration through other means.
Git Worktrees
Section titled “Git Worktrees”SCC integrates git worktree management:
scc worktree create ~/project feature-authscc start ~/project-scc-worktrees/feature-authManual setup requires scripting worktree creation and container coordination yourself.
Session Persistence
Section titled “Session Persistence”SCC tracks sessions for resume capability:
scc start --resume ~/my-project # Resume previous sessionscc session list # See all sessionsWhat Manual Setup Requires
Section titled “What Manual Setup Requires”If you choose to set up Docker manually, you’ll need to:
-
Create Docker configuration
- Dockerfile or base image selection
- Volume mount configuration
- Network settings
- Environment variables
-
Script container management
- Start/stop scripts
- Session tracking
- Cleanup procedures
-
Implement safety features (if desired)
- Git command filtering
- Plugin restrictions
- Network isolation
-
Distribute configuration
- Share Dockerfiles/scripts with team
- Enforce consistency manually
- Handle updates across machines
-
Maintain over time
- Update base images
- Fix issues as Docker/Claude Code evolve
- Propagate changes to team
Example: Manual Docker Setup
Section titled “Example: Manual Docker Setup”Here’s what a minimal manual setup might look like:
# Run Claude Code in Docker manuallydocker run -it --rm \ -v ~/my-project:/workspace \ -w /workspace \ -e ANTHROPIC_API_KEY \ python:3.12 \ bash -c "pip install claude-code && claude"This lacks:
- Team configuration
- Git safety rails
- Plugin governance
- Session persistence
- Worktree integration
When to Use Each
Section titled “When to Use Each”Choose SCC When
Section titled “Choose SCC When”- You want quick setup without Docker expertise
- Teams need consistent configurations
- Git safety and plugin governance matter
- You prefer maintained tooling over custom scripts
Choose Manual Docker When
Section titled “Choose Manual Docker When”- You need complete control over the container environment
- Your organization has specific Docker requirements SCC can’t meet
- You’re experimenting or learning Docker
- You have dedicated DevOps resources to maintain scripts
Migration Path
Section titled “Migration Path”If you have manual Docker scripts, migrating to SCC is straightforward:
- Install SCC:
uv tool install scc-cli - Create org config: Define your team’s policies in JSON
- Run setup:
scc setup --org your-config-url - Start using:
scc start ~/project
Your manual scripts can remain as fallback or for special cases.