トラブルシューティング
コンテナが起動しない
Section titled “コンテナが起動しない””Conflict. The container name is already in use”
Section titled “”Conflict. The container name is already in use””docker rm -f devcontainerdocker compose up -dpodman rm -f devcontainerpodman-compose up -dAIツールが動作しない
Section titled “AIツールが動作しない””claude: command not found”
Section titled “”claude: command not found””イメージが古い可能性があります。最新版をプルして再起動してください:
docker compose pulldocker compose up -dpodman-compose pullpodman-compose up -dClaudeが “Not logged in” と表示する
Section titled “Claudeが “Not logged in” と表示する”エントリポイントは ~/.claude.json にオンボーディングフラグを設定します。ファイルが存在しない場合:
echo '{"hasCompletedOnboarding": true}' > ~/.claude.jsonClaudeが “Invalid API key” と表示する
Section titled “Claudeが “Invalid API key” と表示する”実際に設定されている値を確認してください:
echo "$ANTHROPIC_API_KEY"よくある原因:
- LiteLLMプロキシキーが未設定または無効 — プロキシモードを使用している場合、
.envのLITELLM_API_KEYに正しいプロキシ認証情報が含まれていることを確認し、コンテナを再起動してエントリポイントがANTHROPIC_API_KEYを導出できるようにしてください。 - OAuthトークンまたはプロキシモードの不一致 — 認証モードは1つだけ使用してください。
CLAUDE_CODE_OAUTH_TOKENが設定されている場合、LiteLLMプロキシモードより優先されます。
APIリクエストが401で失敗する
Section titled “APIリクエストが401で失敗する”APIキーが正しく設定されていることを確認してください:
echo "$ANTHROPIC_API_KEY"プロバイダーに直接呼び出しを行い、動作を確認してください。
Claudeが “model not found” と表示する
Section titled “Claudeが “model not found” と表示する”モデルはプロバイダーとAPIキーによって決定されます。利用可能なモデルについてはプロバイダーのドキュメントを確認してください。
GitHub CLI
Section titled “GitHub CLI””gh: not authenticated”
Section titled “”gh: not authenticated””gh CLIには GH_TOKEN 環境変数が必要です。.env ファイルに追加してください:
GH_TOKEN=ghp_your-token-heregithub.com/settings/tokens でトークンを作成してください。きめ細かいトークン(推奨)または repo スコープ付きのクラシックトークンのどちらも使用できます。.env を更新した後、コンテナを再起動してください。
HTTPS git cloneが401で失敗する
Section titled “HTTPS git cloneが401で失敗する”GH_TOKEN が設定されている場合、エントリポイントは gh auth setup-git を実行してHTTPS用のgit認証ヘルパーを設定します。HTTPS操作が失敗する場合:
- トークンが有効であることを確認:
gh auth status - 認証ヘルパーが設定されていることを確認:
git config --global credential.helper - コンテナを再起動してエントリポイントを再実行
SSH vs HTTPS
Section titled “SSH vs HTTPS”コンテナ内では両方の認証方法を共存させることができます:
- SSH(
.envのSSH_PRIVATE_KEY)—git@github.com:URLを使用します。組織がSSHを強制している場合に必要です。 - HTTPS(
.envのGH_TOKEN)—https://github.com/URLを使用します。セットアップが簡単で、鍵の管理が不要です。
両方が設定されている場合、gitはリモートURLに一致するプロトコルを使用します。既存のクローンを切り替えるには:
# SSHからHTTPSへgit remote set-url origin https://github.com/owner/repo.git
# HTTPSからSSHへgit remote set-url origin git@github.com:owner/repo.git/workspaceまたは/homeで “Permission denied”
Section titled “/workspaceまたは/homeで “Permission denied””sudo chown -R $(id -u):$(id -g) /workspace ~npm installがEACCESで失敗する
Section titled “npm installがEACCESで失敗する”エントリポイントは ~/.npm-global にユーザー書き込み可能なnpmグローバルプレフィックスを自動設定するため、実行時の npm install -g コマンドは sudo なしで動作するはずです。それでもEACCESエラーが発生する場合は、手動で修正を適用してください:
mkdir -p ~/.npm-globalnpm config set prefix ~/.npm-globalexport PATH="$HOME/.npm-global/bin:$PATH"ビルドの問題
Section titled “ビルドの問題”ビルドに非常に時間がかかる
Section titled “ビルドに非常に時間がかかる”初回ビルドではベースイメージ(約1 GB)をダウンロードします。以降のビルドではキャッシュが使用されます。毎回遅い場合:
docker builder prunepodman builder prune“No space left on device”
Section titled ““No space left on device””docker system prune -a --volumespodman system prune -a --volumes警告: これはこのプロジェクトのものだけでなく、すべての未使用コンテナ、イメージ、ボリュームを削除します。
ネットワーク
Section titled “ネットワーク”コンテナ内からインターネットに接続できない
Section titled “コンテナ内からインターネットに接続できない”ping -c 1 8.8.8.8nslookup google.comcurl -I https://github.comDNSが失敗する場合、ホストの /etc/docker/daemon.json に以下を追加してください:
{ "dns": ["8.8.8.8", "8.8.4.4"]}その後、Dockerを再起動してください。
DNSが失敗する場合、Podmanマシン内でDNSを設定してください:
podman machine sshsudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'exitまたは、ホストの ~/.config/containers/containers.conf にDNS設定を追加してください:
[containers]dns_servers = ["8.8.8.8", "8.8.4.4"]その後、Podmanを再起動してください:podman machine stop && podman machine start。
リモートディスプレイ(noVNC)
Section titled “リモートディスプレイ(noVNC)”noVNCで黒い画面が表示される
Section titled “noVNCで黒い画面が表示される”Xvfbが起動していない可能性があります。コンテナ内で確認してください:
ps aux | grep Xvfb実行されていない場合、ENABLE_VNC が false に設定されていないことを確認し、コンテナを再起動してください。
“Cannot open display” または “No display” エラー
Section titled ““Cannot open display” または “No display” エラー”DISPLAY 環境変数が設定されていない可能性があります。確認してください:
echo "$DISPLAY":99 と表示されるはずです。空の場合、.env または devcontainer.json に DISPLAY=:99 を追加して再起動してください。
ポート6080の接続が拒否される
Section titled “ポート6080の接続が拒否される”noVNCが実行されていない可能性があります。コンテナ内で確認してください:
ps aux | grep -E 'novnc|websockify'実行されていない場合、ENABLE_VNC が true(デフォルト)であることを確認し、コンテナログを確認してください:
docker compose logs dev | grep -i vncpodman-compose logs dev | grep -i vncポート6080が既に使用中
Section titled “ポート6080が既に使用中”docker-compose.yml でホストポートを変更してください:
ports: - "127.0.0.1:16080:6080"Chrome DevTools MCP
Section titled “Chrome DevTools MCP”Chromeのリモートデバッグが応答しない
Section titled “Chromeのリモートデバッグが応答しない”共有Chromeインスタンスはポート9222で実行されているはずです。コンテナ内で確認してください:
# Chromeは実行されていますか?curl http://localhost:9222/json/version
# Chromeのログを確認cat ~/.local/share/chrome-browser/chrome.log
# シンボリックリンクを確認ls -la /opt/google/chrome/chrome
# Chromeを手動で再起動. /usr/local/lib/chrome-browser.shstart_chrome_browserシンボリックリンクが存在しない場合、最新のイメージをプルしてコンテナを再起動してください。
ブラウザプロファイルのロックエラー
Section titled “ブラウザプロファイルのロックエラー”共有ブラウザアーキテクチャでは、プロファイルロックエラーは発生しないはずです。発生した場合、古いChromeプロセスがロックを保持している可能性があります:
# 古いChromeプロセスを強制終了pkill -f 'chrome.*remote-debugging-port' || true
# ロックファイルを削除rm -f ~/.cache/chrome-devtools-mcp/chrome-profile/SingletonLock
# Chromeを再起動. /usr/local/lib/chrome-browser.shstart_chrome_browserchrome-devtools-mcpツールが重複する
Section titled “chrome-devtools-mcpツールが重複する”chrome-devtools-mcpサーバーは ~/.claude/settings.json にグローバルに登録されています。リポジトリごとの .mcp.json でも登録している場合、ツールが重複して表示されます。リポジトリごとの .mcp.json ファイルから chrome-devtools-mcp エントリを削除してください:
# リポジトリごとの設定を確認cat .mcp.jsonグローバル登録を使用するために、リポジトリごとの .mcp.json から chrome-devtools-mcp キーを削除してください。
すべてをリセット
Section titled “すべてをリセット”docker compose down -vdocker rm -f devcontainer 2>/dev/nulldocker compose pulldocker compose up -dpodman-compose down -vpodman rm -f devcontainer 2>/dev/nullpodman-compose pullpodman-compose up -dこれによりボリューム内のすべてのデータが破棄されます。リポジトリの再クローンとツールの再設定が必要になります。