Docker
April 18, 2026 ยท View on GitHub
Use this image in two steps:
- Run a one-time onboarding session with
claude. - Start the API in
servemode using the same mounted account bundle.
The container persists Claude state in one host directory mounted at /claude-account.
Account bundle mount
The image links container home paths to the mount when present:
/root/.claude -> /claude-account/.claude
/root/.claude.json -> /claude-account/.claude.json
Create one directory per account:
mkdir -p ./accounts/personal ./accounts/work
Mount one directory per container run with -v <host-dir>:/claude-account.
Step 1: run onboarding (claude)
Start an interactive container and complete first-run setup:
docker run --rm -it \
-v "$PWD/accounts/personal:/claude-account" \
claudraband claude
If the mount is empty, onboarding writes .claude and .claude.json into that directory.
Step 2: run the daemon (serve)
Start the service from the same mounted bundle. serve expects onboarding state to exist in that mount, so finish step 1 first:
docker run --rm -d --name claudraband \
-p 7842:7842 \
-v "$PWD/accounts/personal:/claude-account" \
claudraband serve
serve is the default entrypoint, so claudraband alone is equivalent.
docker run --rm -d --name claudraband \
-p 7842:7842 \
-v "$PWD/accounts/personal:/claude-account" \
claudraband
Use your host tooling to inspect runtime logs:
docker logs -f claudraband
Multiple accounts with bind mounts
Keep each account in its own host directory and only swap the bind mount path.
docker run --rm -d --name claudraband-personal \
-p 7842:7842 \
-v "$PWD/accounts/personal:/claude-account" \
claudraband
docker run --rm -d --name claudraband-work \
-p 7843:7842 \
-v "$PWD/accounts/work:/claude-account" \
claudraband
This keeps sessions, theme, and login state isolated per account without any copy step.
Direct mount alternative
You can skip /claude-account and mount state files directly:
docker run --rm -d --name claudraband \
-p 7842:7842 \
-v "$HOME/.claude:/root/.claude" \
-v "$HOME/.claude.json:/root/.claude.json" \
claudraband
This uses your host files at /root/.claude* paths and is a valid alternative when you need a one-to-one mount setup instead of account directories.