公開日: 最終更新:
執筆・編集:株式会社Nexa 編集部(下書きと機械検査はAI、公開前に人が確認)/約17分で読めます。公式ドキュメント・公式発表などの一次情報を確認したうえで執筆・更新しています。AIツールの仕様や料金は変わることがあるため、導入判断の前に各公式サイトの最新情報もご確認ください。記事の作り方と検査の方針
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を使ったマルチサービス構成まで、実務で使える手順を網羅的に解説します。
※本記事の設定内容は、Anthropic公式のDev Containerドキュメント(code.claude.com/docs/en/devcontainer)および公式リファレンスコンテナの記載をもとに、2026年10月1日時点で確認しています。
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以上 |
| プロセッサ | x64 または ARM64 |
| ホストOS | macOS / Windows(WSL2) / Linux(Dev Containerを使う場合、対応エディタとしてVS Code・GitHub Codespaces・JetBrains IDE等が必要) |
| Docker | Docker Desktop最新版 |
※ストレージ容量については公式ドキュメントに具体的な数値の記載がありません。コンテナイメージのビルド分を見込んで、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.0": {}
},
"runArgs": [
"--cap-add=NET_ADMIN",
"--cap-add=NET_RAW"
],
"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.0でClaude Codeを自動インストール(バージョンタグはインストールスクリプトのバージョンで、Claude Code本体のバージョンではない。本体はコンテナ内で自動更新される) |
runArgs |
NET_ADMIN・NET_RAW権限を追加。init-firewall.shがコンテナ内でファイアウォールルールを設定するために必要(無いとpostStartCommandが失敗する) |
mounts |
.claudeフォルダをマウントして認証情報・設定を永続化。ただしOAuthアカウント情報等は~/.claude.jsonという別ファイルに保存されるため、再ビルドをまたいでサインイン状態を保ちたい場合は、名前付きボリュームとCLAUDE_CONFIG_DIR環境変数を合わせて設定する必要があります(公式ドキュメント「Persist authentication and settings across rebuilds」) |
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 Meta APIで取得した公開IPレンジ全体(個別ドメインの列挙ではない) |
| エラー監視・機能フラグ | sentry.io, statsig.com |
| VS Code拡張機能 | marketplace.visualstudio.com, vscode.blob.core.windows.net, update.code.visualstudio.com |
このホワイトリスト方式により、Claude Codeが意図しない外部サービスにデータを送信するリスクを根本から遮断できます。pypi.orgなどPython系レジストリはデフォルトの許可リストに含まれていないため、pip installを使う場合は次項の手順で自分で追記する必要があります。
許可するドメインのカスタマイズ
公式のinit-firewall.shは、許可ドメインを配列ではなくforループで列挙する構成になっています。自社のプロジェクトで追加のドメインが必要な場合は、このループの一覧に追記します。例えば、社内のnpmレジストリを使っている場合は次のように対象ドメインを増やします。
# init-firewall.sh 内の許可ドメイン一覧(抜粋・社内npmレジストリを追加する例)
for domain in \
"registry.npmjs.org" \
"api.anthropic.com" \
"sentry.io" \
"statsig.com" \
"your-private-registry.company.com" \
...
do
# ドメインを解決してファイアウォールの許可リストに追加
...
done
pypi.orgなど、公式の一覧に無いレジストリを使う場合も同じ手順で追記してください(追記なしではpip installがファイアウォールにブロックされます)。
–dangerously-skip-permissionsの使いどころ
コンテナ環境では、通常のパーミッション確認を省略するオプションが使えます。
claude --dangerously-skip-permissions
このオプションは、ファイル操作やコマンド実行のたびに確認ダイアログが表示されなくなるため、長時間の自動化処理に向いています。ただし、コンテナの外でこのオプションを使うことはリスクが高いため、Dev Container環境内に限定して使用することを徹底してください。公式ドキュメントによれば、このフラグはコンテナがrootユーザーで起動している場合は拒否されるため、devcontainer.jsonのremoteUserを非rootアカウント(node等)に設定しておく必要があります。
Docker環境で安全に自動化処理を実行したい場合のコマンド例です。
claude --dangerously-skip-permissions "テストを全て実行して、失敗したテストを修正してください"
AI導入に関するお困りごとは、株式会社NexaのAI顧問がサポートします。「何から始めればいいか分からない」という段階からご相談いただけます。
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-xxxxx
DB_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"
}
\ AI活用の「次の一手」を一緒に考えませんか /
AI顧問の無料相談はこちらよくある質問
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連携ガイドも参考にしてください。
Q. init-firewall.shを使わないとDev Containerは使えませんか?
使えます。公式ドキュメントでは、init-firewall.shとNET_ADMIN・NET_RAW権限は、公式リファレンスコンテナが同梱しているオプションの一例であり、Claude Code自体の動作に必須ではないと明記されています。自前のネットワーク制御(プロキシやVPCのアウトバウンド制限など)がすでにある場合は、ファイアウォールスクリプトとrunArgsの権限追加を省略しても、Claude Codeはコンテナ内で問題なく動作します。
まとめ
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導入・活用の月額伴走サービス
AI導入の疑問を、週1回のMTGで相談できる「AI顧問」
株式会社Nexaでは、ChatGPT・Claude・Claude CodeなどのAI導入に関する質問や、社内活用・業務自動化の進め方を週1回相談できる 月額7万円(毎月3社限定で月額5万円)のAI顧問サービス を提供しています。
「自社では何から始めるべきか」「この業務はAI化できるか」「どのツールを選ぶべきか」を、無料相談で整理します。
この記事で参照した外部情報
- code.claude.com/docs/en/devcontainercode.claude.com
- 公式リファレンスコンテナgithub.com
- docker.comdocker.com
- code.visualstudio.comcode.visualstudio.com
- console.anthropic.comconsole.anthropic.com
本文中でリンクしている外部ページの一覧です(自動生成)。最終確認日は本記事の最終更新日 2026-10-01 で、リンク先の内容はその後変わることがあります。
AI導入を検討中の方へ









