【完全ガイド】Windows で Claude Code を安全に使う!WSL 2 + DevContainer で環境分離する方法

Claude Code はターミナル上で動くAIコーディングエージェントですが、ホストマシンのファイルシステムやターミナルに直接アクセスするため、環境を分離して安全に使いたいというニーズがあります。

この記事では、Windows 上で Claude Code を Docker コンテナ(DevContainer)に閉じ込めて安全に運用する方法を、実際に構築した手順に沿ってステップバイステップで解説します。


この記事で分かること

  • Windows で Claude Code を環境分離する方法の選択肢
  • Anthropic 公式推奨の WSL 2 + DevContainer 構成
  • Cursor(VS Code フォーク)での DevContainer セットアップ手順
  • 構築中に遭遇したエラーとその解決方法
  • Remote Control でスマホからセッションを操作する方法

Windows での環境分離:3つの選択肢

Claude Code を Windows で動かす方法は複数あり、環境分離のレベルが異なります。

1. ネイティブ Windows + Git Bash(分離なし)

最も手軽な方法です。Git for Windows をインストールして PowerShell から直接使えますが、Claude Code がホストマシンのファイルシステムに自由にアクセスできるため、環境分離の観点では不十分です。

2. WSL 2 に直接インストール(中程度の分離)

WSL 2 上に Claude Code をインストールする方法です。WSL 2 はサンドボックスをサポートしており、Windows ホストからはある程度分離されます。手軽さと分離のバランスが良い選択肢です。

3. WSL 2 + DevContainer(公式推奨・高い分離)

Anthropic の公式セキュリティドキュメントが推奨する方法です。Docker コンテナ内に隔離された環境を作り、ファイアウォールでネットワーク通信も制限します。--dangerously-skip-permissions フラグを使った自動運用を安全に行いたい場合は、この方法一択です。

方式分離レベルパフォーマンス手軽さ
ネイティブ Windows + Git Bash普通
WSL 2 に直接インストール最速
WSL 2 + DevContainer速い

本記事では、公式推奨の WSL 2 + DevContainer 方式で構築します。


全体のアーキテクチャ

構築する環境の全体像は以下のとおりです。

🖥️ Windows Host
├── Cursor(Claude Code 拡張入り)
├── Docker Desktop(WSL 2 バックエンド)
│
└── 🐧 WSL 2 (Ubuntu)
    └── ~/projects/my-project/
        │
        └── 🐳 DevContainer
            ├── Claude Code CLI
            ├── Node.js 20
            ├── Git / ZSH / fzf
            ├── 🔒 ファイアウォール(ホワイトリスト方式)
            │   ├── ✅ api.anthropic.com
            │   ├── ✅ github.com
            │   ├── ✅ registry.npmjs.org
            │   └── ❌ その他すべてブロック
            ├── /workspace(プロジェクトファイル)
            └── Docker Volumes(認証情報・履歴の永続化)

ポイント:

  • Windows のファイルシステムには触れない
  • ホワイトリスト外のサーバーには通信できない
  • コンテナを壊しても再ビルドするだけで復旧
  • 認証情報とコマンド履歴は Docker Volume に永続化

前提条件

  • Windows 10(Build 19041 以降)または Windows 11
  • Docker Desktop インストール済み
  • Cursor または VS Code インストール済み

Note: 本記事では VS Code フォークである Cursor を使用しています。VS Code の場合も手順はほぼ同じです。


Step 1:WSL 2 を有効にする

PowerShell を 管理者として 開いて以下を実行します。

wsl --install -d Ubuntu

既に WSL 2 が有効な場合はスキップしてください。以下のコマンドで確認できます。

wsl --list --verbose

VERSION 列が 2 になっていれば OK です。


Step 2:Docker Desktop の WSL 2 統合を有効にする

Docker Desktop を開き、以下の 2 箇所を確認します。

Settings → General

「Use the WSL 2 based engine」にチェックが入っていることを確認します。

Settings → Resources → WSL integration

Ubuntu ディストリビューションの トグルを ON にします。

WSL integration とは何か?

この設定は、WSL 2 内の Ubuntu ディストリビューションから docker コマンドを直接使えるようにするためのものです。

  • OFF の場合: Docker エンジンは Windows 側でのみ動作。WSL 2 から docker コマンドが使えません。
  • ON の場合: Docker Desktop が WSL 2 側に docker コマンドへのパスを自動的に通してくれます。

Docker エンジン自体が Ubuntu 内にインストールされるわけではなく、Windows 側の Docker Desktop エンジンにソケット経由でアクセスできる橋渡しをしているだけです。

⚠️ 重要: この設定を変更した場合は、Docker Desktop の再起動が必要です。タスクバーの Docker アイコンを右クリック → 「Restart」で再起動してください。


Step 3:Cursor に Dev Containers 拡張をインストール

Cursor の拡張機能タブ(Ctrl+Shift+X)で以下をインストールします。

  • Cursor Dev Containers(Anysphere 製)

VS Code を使用している場合は、以下の 2 つをインストールしてください。

  • Dev Containers(Microsoft 製)
  • WSL(Microsoft 製)

Step 4:WSL 2 内で作業ディレクトリを準備

WSL 2 のターミナルを開きます(Windows Terminal から Ubuntu を選ぶか、PowerShell で wsl と入力)。

mkdir -p ~/projects/my-project
cd ~/projects/my-project

なぜ WSL 2 側にプロジェクトを置くのか?

Windows 側のパス(/mnt/c/Users/...)にプロジェクトを置くと、ファイルの読み書きが WSL 2 ↔ Windows 間のファイルシステム変換を経由するため、I/O が遅くなります。Claude Code は大量のファイル操作を行うので、体感速度にかなり影響します。

# ❌ 遅い(Windows 側のファイルシステム)
cd /mnt/c/Users/username/my-project

# ✅ 速い(WSL 2 側のファイルシステム)
cd ~/projects/my-project

~ とは?

~(チルダ)はログイン中ユーザーのホームディレクトリを指すショートカットです。ユーザー名が kenbun なら、~/projects/home/kenbun/projects と同じ意味です。

WSL 2 のファイルはどこに保存されるのか?

WSL 2 のファイルシステムは、Windows 上の仮想ハードディスクファイル(.vhdx)内に格納されています。

C:\Users\(ユーザー名)\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu...\LocalState\ext4.vhdx

Windows のエクスプローラーから中身を見たい場合は、アドレスバーに \\wsl$\Ubuntu と入力するとアクセスできます。

既存プロジェクトの移行

Windows 側に既存のプロジェクトがある場合は、WSL 2 側にコピーします。

# 方法1:直接コピー
cp -r /mnt/c/Users/(ユーザー名)/(プロジェクトのパス) ~/projects/my-project

# 方法2:Git リポジトリならクローンの方がクリーン
cd ~/projects
git clone (リポジトリのURL) my-project

Step 5:WSL 2 で Git 認証を設定する

WSL 2 は Windows とは独立した環境のため、Git の認証情報が設定されていません。Windows 側の Git Credential Manager を共有する設定を行います。

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

Note: パスが見つからない場合は、ls "/mnt/c/Program Files/Git/mingw64/bin/" で実際のファイル名を確認してください。git-credential-manager-core.exe という名前の場合もあります。


Step 6:公式 DevContainer 設定を取得

Anthropic が提供する公式のリファレンス実装をクローンし、.devcontainer ディレクトリをプロジェクトにコピーします。

# 公式リポジトリをクローン
git clone https://github.com/anthropics/claude-code.git ~/claude-code-ref

# .devcontainer をプロジェクトにコピー
cp -r ~/claude-code-ref/.devcontainer ~/projects/my-project/

# 確認
ls ~/projects/my-project/.devcontainer/

以下の 3 ファイルが表示されれば成功です。

ファイル役割
devcontainer.jsonコンテナ設定、拡張機能、ボリュームマウント
Dockerfileコンテナイメージの定義
init-firewall.shネットワークセキュリティルール

Step 7:DevContainer を起動

WSL 2 のターミナルから Cursor を開きます。

cd ~/projects/my-project
cursor .

Note: cursor コマンドが使えない場合は、Cursor のコマンドパレット(Ctrl+Shift+P)→「Install ‘cursor’ command in PATH」を実行してください。VS Code の場合は code . です。

Cursor が開いたら、以下のいずれかで DevContainer を起動します。

  • 方法 A: 右下に表示される「Reopen in Container」通知をクリック
  • 方法 B: コマンドパレット(Ctrl+Shift+P)→ Dev Containers: Reopen in Container を選択

初回はイメージのビルドに数分かかります。


トラブルシューティング

エラー:docker info の Server が空

Failed to reopen folder in container: Error running `docker info`.

原因: Docker Desktop の WSL 2 統合設定を変更した後、再起動していない。

対処法: Docker Desktop をタスクバーアイコンから「Restart」で再起動し、docker info で Server 情報が表示されることを確認してから再度「Reopen in Container」を実行。

エラー:init-firewall.sh が失敗する

postStartCommand from devcontainer.json failed.

原因: コンテナに iptables を操作するための NET_ADMIN 権限がない。Docker Desktop + WSL 2 環境でよく発生します。

対処法①:権限を追加

devcontainer.json に以下を追加します。

"runArgs": ["--cap-add=NET_ADMIN"],

対処法②:ファイアウォールをスキップ

上記で解決しない場合は、devcontainer.json 内の以下の行を削除(またはコメントアウト)します。

"postStartCommand": "sudo /usr/local/bin/init-firewall.sh",

ファイアウォールを無効にしても DevContainer 自体のファイルシステム分離は有効なので、環境分離の効果は残ります。

変更後、コマンドパレットから Dev Containers: Rebuild Container を実行してください。


Step 8:Claude Code にログイン

DevContainer が起動すると、Cursor のターミナルが自動的にコンテナ内のシェルになります。ここで Claude Code を起動します。

claude

初回セットアップの流れ:

  1. カラースキーマを選択
  2. ログイン方式を選択 → Subscription を選ぶ
  3. 表示される URL をブラウザで開いてトークンを取得
  4. トークンを貼り付け

以下のコマンドで動作確認します。

# バージョン確認
claude --version

# 作業ディレクトリの確認(/workspace になっていれば OK)
pwd

# 試しにタスクを実行
claude "このディレクトリの構成を教えて"

2 回目以降の起動

Cursor で同じプロジェクトフォルダを開けば、左下の >< アイコンから「Reopen in Container」を選ぶだけです。認証情報やコマンド履歴は Docker Volume に永続化されているため、毎回ログインし直す必要はありません。


別プロジェクトへの適用

新しいプロジェクトでも .devcontainer フォルダをコピーするだけです。

cp -r ~/claude-code-ref/.devcontainer ~/projects/another-project/
cd ~/projects/another-project
cursor .
# → "Reopen in Container" をクリック

プロジェクトごとに独立したコンテナが作られるので、環境が混ざることはありません。


【おまけ】Remote Control でスマホから操作する

Claude Code の Remote Control 機能を使えば、DevContainer 内で動いているセッションをスマホや別のブラウザから操作できます。

使い方

DevContainer 内のターミナルで以下を実行します。

# 既存セッション内から
/remote-control

QR コードと URL が表示されるので、スマホの Claude アプリまたはブラウザからアクセスします。ローカル環境のファイルシステム、MCP サーバー、ツール、プロジェクト設定がすべてそのまま利用でき、Web・モバイル・ターミナルのどこからでもメッセージを送受信できます。

注意点

  • Max プランまたは Pro プランが必要(Team・Enterprise は未対応)
  • API キーは非対応
  • コンテナからインターネットへの HTTPS 通信が必要(Anthropic のリレーサーバー経由)

まとめ

Windows で Claude Code を安全に使うには、WSL 2 + DevContainer が Anthropic 公式推奨の構成です。

  • ファイルシステム分離: コンテナ内のファイル操作は Windows ホストに影響しない
  • ネットワーク制限: ホワイトリスト方式のファイアウォールで不要な通信をブロック
  • 永続化: 認証情報・コマンド履歴は Docker Volume で保持
  • 再現性: .devcontainer フォルダをコピーするだけで同じ環境を複製可能

初回の構築には多少の手間がかかりますが、一度セットアップすれば「Reopen in Container」をクリックするだけで安全な開発環境が立ち上がります。Claude Code を本格的に活用するなら、ぜひこの構成を試してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール