Claude CodeをDockerのDev Container環境で実行すると、環境の再現性・セキュリティ・チーム効率が大幅に向上します。
- 要点1: Dev Containerを使うとチームメンバー全員が同一環境でClaude Codeを利用でき、オンボーディング時間を大幅に削減できる
- 要点2: init-firewall.shによるネットワーク制限で、AIエージェントのホストマシンへの影響をコンテナ内に封じ込められる
- 要点3: Docker Composeでデータベース等と組み合わせると、本番に近い環境でのAI支援開発が可能になる
対象: Claude CodeのDocker対応を検討しているDX推進担当者・開発チームリーダー
今日やること: .devcontainerフォルダを作成し、公式のdevcontainer.jsonをプロジェクトに追加する
この記事の目次
Claude CodeをDocker(Dev Container)環境で実行することで、環境の再現性・ホストマシンの保護・チーム全体での設定共有が一度に実現できます。
「AIツールを導入したいが、開発者ごとに環境が異なって管理が大変」「Claude Codeが誤って重要なファイルを変更しないか不安」——こうした現場の声は、Docker環境を活用することで解消できます。
この記事では、Anthropic公式のDev Container設定をベースに、devcontainer.jsonの書き方からセキュリティ強化、Docker Composeを使ったマルチサービス構成まで、実務で使える手順を網羅的に解説します。
Claude CodeをDockerで使う3つのメリット
Claude CodeにDockerのDev Containerを組み合わせることで得られるメリットは、大きく3つに分けられます。単なる環境整備にとどまらず、チーム全体のAI活用を加速させる効果があります。
環境の再現性:「私のマシンでは動く」問題を解消
Dockerコンテナを使うことで、開発者全員が全く同一の環境でClaude Codeを実行できます。Node.jsのバージョン、インストール済みツール、Claude Codeのバージョンまで、.devcontainerフォルダをGitリポジトリに含めるだけで共有が完結します。
新しいメンバーが参加した際も、VS CodeでリポジトリをクローンしてDev Containerを起動するだけで、セットアップが完了します。従来のような「ローカル環境構築に半日かかる」状況は解消されます。
実務ポイント
.devcontainerフォルダをGitで管理することで、環境設定の変更履歴も追跡できます。Claude Code のバージョン更新も、devcontainer.jsonを1か所修正するだけで全員に反映されます。
ホストマシンへの影響を遮断するセキュリティ
Claude Codeはコードの生成・実行・ファイル操作を自律的に行うAIエージェントです。そのため「意図しないファイルの変更」「不要なパッケージのインストール」といったリスクをどう管理するかが、企業導入の重要な課題になります。
Dev Container環境では、Claude Codeの操作はコンテナ内に閉じ込められます。コンテナ外のホストマシンへの影響は、明示的に許可したボリュームマウントの範囲に限定されます。さらに、後述するファイアウォール設定(init-firewall.sh)でネットワークアクセスも制御できます。
チームオンボーディングの効率化
チーム開発においてDev Containerが最も効果を発揮するのは、新規メンバーの参加時です。環境構築の手順書を整備・メンテナンスする必要がなくなり、環境起因のトラブルシューティングに費やす時間も削減されます。
| 課題 | 従来の対応 | Dev Container導入後 |
|---|---|---|
| 環境構築 | 手順書に従って数時間 | コンテナ起動で完結(30分以内) |
| ツールのバージョン統一 | 個別に確認・調整 | 自動で統一 |
| トラブルシューティング | 個人の環境依存で難しい | コンテナを再ビルドすれば解消 |
| CI/CD連携 | 環境差異でテストが落ちる | ローカルとCIで同一環境 |
事前準備:必要なツールとシステム要件
Dev Container環境を構築するには、いくつかのツールが必要です。事前に確認しておきましょう。
必要なツール一覧
| ツール | 用途 | 入手先 |
|---|---|---|
| Docker Desktop | コンテナランタイム | docker.com |
| VS Code | エディタ(Dev Container対応) | code.visualstudio.com |
| Dev Containers拡張機能 | VS CodeのDev Container対応 | VS Code拡張機能マーケットプレイス |
| Anthropic APIキー | Claude Code認証 | console.anthropic.com |
システム要件
Anthropicの公式ドキュメントによれば、Claude Codeを実行するコンテナには以下のスペックが推奨されています。
| 項目 | 最小要件 | 推奨 |
|---|---|---|
| RAM | 4GB | 8GB以上 |
| ストレージ | 10GB(コンテナイメージ用) | 20GB以上 |
| OS | macOS / Windows(WSL2) / Linux | Linux推奨 |
| Docker | Docker Desktop最新版 | 最新版 |
ポイントWindowsユーザーはWSL2(Windows Subsystem for Linux)の有効化が前提となります。WSL2の設定についてはClaude Code Windows完全ガイドを参照してください。
基本セットアップ:Dev Containerの構築手順
ここからは実際の設定手順を解説します。Anthropicは公式のDev Container設定をGitHubで公開しており、これをベースに自プロジェクトへの設定が可能です。
.devcontainerフォルダの作成
プロジェクトのルートディレクトリに.devcontainerフォルダを作成し、以下の3つのファイルを配置します。
your-project/├── .devcontainer/│ ├── devcontainer.json # コンテナ設定・VS Code拡張機能│ ├── Dockerfile # コンテナイメージの定義│ └── init-firewall.sh # ネットワークセキュリティ設定├── src/└── ...
devcontainer.jsonの基本設定
devcontainer.jsonはDev Containerの中心的な設定ファイルです。以下は基本的な設定例です。
{ "name": "Claude Code Dev Container", "build": { "dockerfile": "Dockerfile" }, "features": { "ghcr.io/anthropics/devcontainer-features/claude-code:1": {} }, "customizations": { "vscode": { "extensions": [ "anthropics.claude-code" ], "settings": { "terminal.integrated.defaultProfile.linux": "bash" } } }, "mounts": [ "source=${localEnv:HOME}/.claude,target=/home/node/.claude,type=bind,consistency=cached" ], "remoteEnv": { "ANTHROPIC_API_KEY": "${localEnv:ANTHROPIC_API_KEY}" }, "postStartCommand": "bash .devcontainer/init-firewall.sh"}
設定のポイント:
| 項目 | 説明 |
|---|---|
features |
ghcr.io/anthropics/devcontainer-features/claude-code:1でClaude Codeを自動インストール |
mounts |
.claudeフォルダをマウントして認証情報・設定を永続化 |
remoteEnv |
ホストの環境変数ANTHROPIC_API_KEYをコンテナに渡す(キーを直書きしない) |
postStartCommand |
コンテナ起動時にファイアウォールスクリプトを実行 |
コンテナのビルドと起動
設定ファイルを配置したら、VS Codeでプロジェクトを開き、コマンドパレット(Ctrl/Cmd + Shift + P)から「Dev Containers: Reopen in Container」を選択します。初回はDockerイメージのビルドに数分かかりますが、2回目以降はキャッシュが効いて高速に起動します。
コンテナ内のターミナルでclaude --versionを実行し、Claude Codeが正常にインストールされていることを確認しましょう。
セキュリティ強化:init-firewall.shの仕組みと設定
Dev Container環境で最も重要なセキュリティ機能が、Anthropic公式が提供するinit-firewall.shです。このスクリプトが、企業利用における安全性を大きく向上させます。
ネットワーク制限の仕組み(ホワイトリスト方式)
init-firewall.shは、コンテナ内からのアウトバウンド通信を「許可リストに登録されたドメインのみ」に制限するファイアウォールルールを設定します。
デフォルトで許可されているドメインは以下の通りです。
| カテゴリ | 許可ドメイン例 |
|---|---|
| Claude API | api.anthropic.com |
| npmレジストリ | registry.npmjs.org |
| GitHub | github.com, githubusercontent.com |
| pypi | pypi.org, files.pythonhosted.org |
このホワイトリスト方式により、Claude Codeが意図しない外部サービスにデータを送信するリスクを根本から遮断できます。
許可するドメインのカスタマイズ
自社のプロジェクトで追加のドメインが必要な場合は、init-firewall.shのホワイトリストに追記します。例えば、社内のnpmレジストリやプライベートGitリポジトリを使っている場合は対象ドメインを追加してください。
# 社内npmレジストリを追加する例ALLOWED_DOMAINS=( "api.anthropic.com" "registry.npmjs.org" "github.com" "your-private-registry.company.com" # 追加)
–dangerously-skip-permissionsの使いどころ
コンテナ環境では、通常のパーミッション確認を省略するオプションが使えます。
claude --dangerously-skip-permissions
このオプションは、ファイル操作やコマンド実行のたびに確認ダイアログが表示されなくなるため、長時間の自動化処理に向いています。ただし、コンテナの外でこのオプションを使うことはリスクが高いため、Dev Container環境内に限定して使用することを徹底してください。
Docker環境で安全に自動化処理を実行したい場合のコマンド例です。
claude --dangerously-skip-permissions "テストを全て実行して、失敗したテストを修正してください"
AI活用の具体的な進め方や、コンテナ環境でのClaude Code導入についてお悩みの方は、まずは無料相談からお気軽にお問い合わせください。
Docker Composeでマルチサービス構成を組む
実際の開発プロジェクトでは、Claude CodeだけでなくデータベースやバックエンドAPIサーバーとも連携する必要があります。Docker Composeを使えば、これらを一括で管理できます。
docker-compose.ymlの基本構成
version: '3.8'services: app: build: context: . dockerfile: .devcontainer/Dockerfile volumes: - .:/workspace - ~/.claude:/home/node/.claude:cached environment: - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} depends_on: - db stdin_open: true tty: true db: image: postgres:16 environment: - POSTGRES_DB=myapp - POSTGRES_USER=user - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432"volumes: postgres_data:
データベースとの連携
Docker Compose環境では、Claude Codeがデータベース(PostgreSQL, MySQL等)に接続したSQLクエリの生成・実行も対話的に行えます。
# Claude Codeからデータベースのスキーマを分析してもらう例claude "PostgreSQLデータベース(host: db, port: 5432)に接続して、 usersテーブルの構造を確認し、パフォーマンスを改善するインデックスを提案してください"
環境変数とシークレット管理
セキュリティ上の理由から、APIキーや認証情報はdocker-compose.ymlに直接書き込まず、.envファイルや環境変数経由で渡します。
# .envファイルの例(Gitには含めない)ANTHROPIC_API_KEY=sk-ant-xxxxxDB_PASSWORD=your_secure_password
.gitignoreに.envを必ず追加し、機密情報がリポジトリに混入しないよう管理します。Claude Code セキュリティ完全ガイドでは、より詳細なシークレット管理の方法を解説しています。
よくあるトラブルと解決策
Dev Container環境のセットアップ時によく遭遇するエラーと、その解決策をまとめました。
コンテナが起動しない場合
症状: VS Codeでコンテナを起動しようとするとエラーが発生する
確認手順:
- Docker Desktopが起動しているか確認
docker psコマンドでDockerが正常に動作しているか確認devcontainer.jsonのJSON構文エラーがないか確認(VS Codeのエラー表示を確認)- Dockerfileのベースイメージが存在するか確認
よくある原因と対処:
| 原因 | 対処方法 |
|---|---|
| Docker Desktopが起動していない | Docker Desktopを起動してから再試行 |
| ポートが競合している | ports設定を変更する(例: "5433:5432") |
| メモリ不足 | Docker Desktopの設定でメモリ割り当てを8GB以上に増やす |
| JSON構文エラー | devcontainer.jsonをJSONバリデーターで確認 |
ANTHROPIC_API_KEYが認識されない場合
症状: コンテナ内でclaude –versionは動くが認証エラーが発生する
確認方法:
# コンテナ内で環境変数を確認echo $ANTHROPIC_API_KEY
空の場合は、ホストマシンに環境変数が設定されているか確認します。
# macOS/Linux: .zshrcまたは.bashrcに追記export ANTHROPIC_API_KEY="sk-ant-xxxxx"# 設定を反映source ~/.zshrc
remoteEnvの設定で${localEnv:ANTHROPIC_API_KEY}と記述していても、ホストに変数がなければコンテナには渡されません。
ファイルのパーミッションエラーが発生する場合
症状: コンテナ内でファイルを作成・編集すると「Permission denied」エラーが出る
原因: コンテナ内のユーザーIDとホストのユーザーIDが異なる場合に発生します。
対処方法: devcontainer.jsonにremoteUserを指定して、コンテナ内で使用するユーザーを統一します。
{ "remoteUser": "node", "containerUser": "node"}
よくある質問
Q. Dev ContainerとDockerの違いは何ですか?
Dockerはコンテナを実行するためのプラットフォームです。Dev Containerは、Dockerを活用して「開発環境をコンテナ内に閉じ込め、VS CodeなどのIDEから透過的に利用する」仕組みを指します。Claude Codeの文脈では「Dev Container = Dockerコンテナ上に構築した開発環境」と理解して問題ありません。
Q. DockerなしでClaude Codeを使うのと何が違いますか?
最大の違いは安全性と再現性です。Dockerなしの場合、Claude Codeはホストマシンに直接アクセスして操作を実行します。コンテナを使うことで、操作範囲をコンテナ内に限定し、ホストへの意図しない変更を防止できます。チーム開発であれば環境差異による問題も解消されます。
Q. チームで同じ設定を共有するにはどうすればよいですか?
.devcontainerフォルダをプロジェクトのGitリポジトリに含めてコミットしてください。チームメンバーはリポジトリをクローンすれば、同一のDev Container設定を利用できます。APIキーなどの機密情報は.envファイルで管理し、.gitignoreで除外してください。
Q. Docker Model Runnerと組み合わせて使えますか?
利用可能です。Docker Model RunnerはAnthropicと互換性のあるAPIを公開しており、Claude CodeのANTHROPIC_BASE_URL環境変数でエンドポイントを切り替えることで、ローカルで動作するLLMをClaude Codeから利用できます。オフライン環境や社内ネットワーク制限がある場合に有効な構成です。
// devcontainer.json"remoteEnv": { "ANTHROPIC_BASE_URL": "http://model-runner:8080/v1", "ANTHROPIC_API_KEY": "local-key"}
詳しい設定方法はClaude Code MCP連携ガイドも参考にしてください。
まとめ
Claude CodeをDocker(Dev Container)環境で実行するメリットと手順を解説しました。要点を振り返ります。
- 環境の再現性:
.devcontainerフォルダをGitで管理することで、チーム全員が同一環境でClaude Codeを利用できる - セキュリティの確保: コンテナ分離とinit-firewall.shのネットワーク制限で、AIエージェントの操作範囲をコントロールできる
- Docker Composeでの拡張: データベース等と組み合わせることで、より現実的な開発環境でAIを活用できる
まず試すなら、公式のdevcontainer.jsonをプロジェクトに追加するだけで始められます。チーム全体へのClaude Code展開を検討している場合は、早めにDev Container環境を整備することをおすすめします。
関連記事: Claude Code VS Code連携ガイド / Claude Code GitHub連携完全ガイド / Claude Code セキュリティ完全ガイド
AIの導入・活用にお悩みですか?
株式会社Nexaでは、ChatGPT・Copilot等の最新AIツールを活用した企業向け研修やコンサルティングを提供しています。「何から始めればいいかわからない」という段階からサポートいたします。





