Claude CodeをDockerで動かすには?利点ややり方・安全な使い方も紹介
Claude CodeをDockerで安全に使いたいけど、どうやって設定すればいいんだろう?
自動承認モードを使うとローカル環境が壊れそうで怖い…
Claude Codeは、コード編集やコマンド実行を任せられる便利なAIエージェントです。しかし、AIが自動でファイルを操作するため、ローカル環境への影響を心配して導入に踏み出せない人は少なくありません。
そこでおすすめなのが、Dockerを使ってAIの作業空間を隔離する方法です。ただし、Dockerを使った隔離環境の構築は、設定ファイルの書き方やOS別の落とし穴を知らないと、思わぬところでつまずきがちです。
そこでこの記事では、具体的な設定例も交え、Claude CodeをDockerで安全に動かす構築手順を解説します。Windows・Mac別のトラブル対策やセキュリティ設定も紹介するので、ぜひ参考にしてください。
Claude Codeの特徴をおさらいしておきたい人は、次の記事を参考にしてください。

- DockerはClaude Codeを安全に使う有効な手段
- Dev Containerを使って動かす方法がおすすめ
- OSごとに固有のトラブルがあり事前対策が必要
『ClaudeCodeに興味はあるけど、どうやって使えばいいんだろう…』
そんな方へ、
- ClaudeCodeに作業や仕事を任せる方法
- ClaudeCodeを使いこなすたった1つのコツ
- 業務効率化や収入獲得に活かすClaudeCodeの実演
を、無料のオンラインセミナーで凝縮してお伝えします!
パソコンはもちろん、スマホから気軽に参加OK。この時間が、あなたを変える大きなきっかけになりますよ。
Claude CodeはDocker環境で動かせる【Windows・Mac共通】

結論から言うと、Claude CodeはWindowsとMacのどちらでもDocker環境で動かせます。Claude Codeの公式ドキュメントでも、Dockerを利用した構成例や導入方法が案内されています。
Dockerは、アプリの動作環境を「コンテナ」として仮想的に構築するソフトウェアです。このコンテナ内にClaude Codeをインストールすれば、AIの処理範囲をコンテナ内部へ限定できます。
Claude Code自体は、JavaScriptの実行環境「Node.js」で作られたツールです。そのため、Claude Codeを動かすDocker環境には、Node.jsが動作するコンテナが必要となります。
ただし、Dockerを動かすための具体的な準備はOSによって異なる点に注意しましょう。Windows環境では「WSL2」、Mac環境では「Docker Desktop」の準備が必要です。
Claude CodeをDocker環境で動かす3つのメリット

Docker環境でClaude Codeを動かすことには、安全性と利便性の両面で利点があります。ここからは次のメリットを、3つにまとめて解説します。
- メリット1:ホスト環境を保護できる
- メリット2:安全に自動承認モードを使える
- メリット3:チームでの共有がしやすくなる
メリット1:ホスト環境を保護できる
Dockerを使うと、ホスト(手元のPC)への影響を防ぎ、ホスト環境を保護できます。Claude Codeの操作範囲をコンテナ内へ限定できるためです。
Claude Codeは強力なAIエージェントで、ファイルの作成・削除・コマンドの実行など、幅広い操作を自律的に行います。ローカル環境で不用意に動かすと、意図しないファイルが変更され、環境の破壊が起きるリスクがあります。
しかし、ファイルの変更がDockerコンテナ内であれば、コンテナの外側には影響が及びません。最悪の場合でもコンテナを破棄して作り直すだけで済むため、ホスト環境への影響を抑えられます。
ホスト環境を保護しながらAIの能力をフルに活用できる点は、Dockerを使う大きなメリットといえます。
メリット2:安全に自動承認モードを使える
Claude Codeには、AIの操作を逐一承認せず自動で進める「自動承認モード(オートモード)」があります。Claude Codeの自動承認モードをDocker環境で使えば、誤操作リスクを抑えることが可能です。
自動承認モードでは、Claude Codeがユーザー確認なしでコマンド実行やファイル編集を進めます。よって、ローカル環境で自動承認モードを使うのはハイリスクです。意図しない変更や削除があっても停止できません。
しかしDocker環境であれば、操作の範囲がコンテナ内に限定されます。ネットワーク制限も組み合わせれば、外部への意図しない接続も防げます。仮に意図しない操作が行われても、ホスト環境が壊れる心配はありません。
つまり、誤操作リスクを抑えつつ、自動承認モードで作業の高速化を図れます。「自動承認モードを使いたいが、ローカル環境を壊したくない」という開発者にとって、Docker環境はその不安を解消する現実的な手段です。
メリット3:チームでの共有がしやすくなる
Dockerは「環境の再現性」を高めるツールであり、設定ファイルの共有で共通の環境を作れるのが強みです。この強みをClaude Codeと組み合わせれば、チーム全員が同じ環境でClaude Codeを使えます。
チーム開発では「自分のパソコン以外ではエラーになる」といった環境差異によるトラブルが起きがちです。これは、OSの違いや、インストールされているツールのバージョン違いなどが原因で発生します。
しかしDockerを使えば、共通の設定に従ってコンテナを起動するだけで、同じ開発環境を再現できます。新しいメンバーがプロジェクトに参加した際も、環境構築の手間がかかりません。
環境を統一してチーム全体の生産性を底上げできる点も、Dockerを採用する大きな恩恵です。
Claude CodeをDocker環境で動かす3つの方法

Docker環境でClaude Codeを動かす方法はさまざまです。ここからは代表的な3つの方法別に、それぞれの特徴と向いているケースを解説します。
方法1:VS CodeなどでDev Containersを使う(おすすめ)
おすすめの方法は、VS Codeなどのコードエディタで「Dev Containers」を使うことです。Dev Containersとは、開発環境とリンクしたコンテナを手軽に用意できる仕組みのこと。
Dev Containersを使えば、コンテナ内の開発環境を、まるでローカル環境のように扱えます。たとえば、VS CodeでClaude Codeのコマンドを実行すると、AIはコンテナ内のファイルをそのまま編集してくれます。
開発者は設定ファイルを配置するだけでよく、その手軽さが大きな魅力です。詳しい設定手順については、後ほど解説します。VS Codeをメインエディタとして使っているITエンジニアに、とくにおすすめの方法です。
VS CodeでのClaude Code活用法を詳しく知りたい人は、次の記事を参考にしてください。

方法2:Docker Composeで他コンテナと一括管理する
「Docker Compose」は、複数のコンテナを1つの設定ファイルで一括管理する仕組みです。設定ファイルのdocker-compose.ymlにClaude Codeを追加すれば、他コンテナと連携した開発環境を手軽に構築できます。
たとえば、Webアプリ用コンテナにClaude Codeを導入し、別コンテナでデータベースを動かせます。専用コマンドを実行するだけで、両方のコンテナをまとめて立ち上げ可能です。
Docker Composeを使えば、複数のコンテナを個別に起動する手間がかかりません。複数のコンテナを組み合わせるケースや、Dockerベースの既存プロジェクトにClaude Codeを追加したいケースに向いています。
方法3:単一のDockerfileからCLIで直接起動する
Dockerでコンテナを作る基本的な方法は、設計図である「Dockerfile」を用意することです。Claude Codeを単独でシンプルに動かしたい場合、単一のDockerfileからCLIで直接起動する方法でも事足りるでしょう。
ファイル内にClaude Codeのインストール手順を記述し、専用コマンドを実行するだけでOKです。構成がシンプルな分、ほかの方法と比べて要件に合わせた自由なカスタマイズを行えます。
特定の開発環境に依存しないため、作業を自動化したい場合にも柔軟に対応できます。ただし、Dev Containersのような連携機能を持たないため、細かいコマンド操作が発生しやすいです。
Dev Containerを使ったClaude CodeのDocker構築手順

公式でも案内されているDev Containersは、多くのITエンジニアが利用する定番の構築方法です。そこで、ここからは具体的な構築手順を、3つにまとめて紹介します。
devcontainer.jsonとDockerfileの基本設定
プロジェクトのルート(最上位階層)に.devcontainerフォルダを作成し、devcontainer.jsonとDockerfileの2ファイルを配置します。この2つが、Dev Containerを使うための中核となる設定ファイルです。
my-project/
└── .devcontainer/
├── devcontainer.json
└── Dockerfile
Dockerfileでは、コンテナの構成や導入するツールを定義します。下記は設定例です。Node.js 20のSlimイメージをベースに、Claude Codeをグローバルインストールしています。
FROM node:20-bullseye-slim
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g @anthropic-ai/claude-code
WORKDIR /workspace
devcontainer.jsonでは、開発環境(コードエディタ)とコンテナの連携方法を指定します。下記は設定例です。コンテナ起動時の挙動や、利用するユーザーの権限などを指定しています。
{
"name": "Claude Code Dev Container",
"build": {
"dockerfile": "Dockerfile"
},
"workspaceFolder": "/workspace",
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind",
"postCreateCommand": "claude --version",
"remoteUser": "node"
}
設定内のremoteUserは、Dev Containerへ接続する際に使用するユーザーです。nodeを指定することで、強力なroot権限(管理者権限)での実行を防ぎ、安全性を高められます。
またpostCreateCommandは、コンテナ作成後に自動実行されるコマンドです。ここではClaude Codeのバージョン確認を行い、正常にインストールできたかを確認しています。
Claude Codeの認証情報をコンテナに渡す方法
Claude Codeをコンテナ内で使うためには、Anthropic社のAPIへ認証済みの状態でアクセスできるようにする必要があります。そのため、認証情報をコンテナ側へ渡さなければなりません。
ただし、APIキーを直接Dockerfileに書き込むのは絶対に避けてください。GitHubなどに誤ってアップロードした場合、APIキーが漏えいするリスクがあります。
安全な方法は、ホストPCの環境変数を通してAPIキーを渡すことです。devcontainer.jsonに、次の設定を追加しましょう。
{
"remoteEnv": {
"ANTHROPIC_API_KEY": "${localEnv:ANTHROPIC_API_KEY}"
}
}
${localEnv:ANTHROPIC_API_KEY}は、ホスト側の環境変数を参照する記法です。この設定を機能させるためには、あらかじめホスト側でAPIキーの環境変数を定義しておく必要があります。
コンテナ起動時にホスト側の設定が読み込まれ、Claude CodeがAPI認証に利用できる仕組みです。
ネットワークアクセスの制限とセキュリティ設定
Claude Codeは自律的にコマンドを実行するため、意図しない外部への通信を防ぐことが重要です。よりセキュリティ性を高めるために、コンテナのネットワークアクセスを必要最小限に絞りましょう。
ただし、Claude CodeはAIモデルと通信して動作するため、完全なオフライン化はできません。少なくともAnthropic社のAPI(api.anthropic.com)への通信は許可する必要があります。
具体的な手順として、まずはdocker network createコマンドを使い、専用のネットワークを作ります。そのうえで、devcontainer.jsonへ次の設定を追加しましょう。これでコンテナが独自のネットワークに接続されます。
{
"runArgs": ["--network=ネットワーク名"]
}
さらに不要な外部接続を厳密に遮断したい場合は、Dockerのファイアウォールルールなどと組み合わせて運用してください。
Docker Composeを使ったClaude CodeのDocker構築手順

複数サービスを扱う開発環境や、既存プロジェクトにClaude Codeを追加する場合、Docker Composeでの管理がおすすめです。そこで、ここからはDocker Composeを使う際のポイントを、2つにまとめて紹介します。
docker-compose.ymlの記述例とディレクトリ構成
前述のとおり、Docker Composeの利用には設定ファイルのdocker-compose.ymlが不可欠です。プロジェクトのルート(最上位階層)にdocker-compose.ymlファイルを配置しましょう。
あわせて、Webコンテナの環境を定義するDockerfileや、環境変数ファイル(.env)も準備します。Webアプリとデータベースを連携させる場合のディレクトリ構成例は、次のとおりです。
my-project/
├── docker-compose.yml
├── .env
├── web/
│ └── Dockerfile
└── src/
参考までに、docker-compose.ymlの記述例を紹介します。この例は、Claude Codeを導入したWebコンテナと「PostgreSQL」のDBコンテナを連携させる設定です。
services:
web:
build:
context: ./web
dockerfile: Dockerfile
volumes:
- ./:/workspace
environment:
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
working_dir: /workspace
tty: true
stdin_open: true
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
APIキーはセキュリティの観点から.envファイルで管理するのが鉄則です。ファイル内にANTHROPIC_API_KEY=”sk-ant-xxxx”と記述し、必ずGitの管理対象外(.gitignore)に設定してください。
設定後はdocker compose up -dコマンドを実行して、連携するコンテナを一括起動させましょう。その後はdocker compose execコマンドでWebコンテナ内に入り、claudeコマンドでAIを呼び出せます。
複数サービス構成でのClaude Code活用例
データベースやAPIサーバーと連携した構成では、Claude Codeの強みがさらに活きます。コンテナ間でファイルを共有(マウント)しているため、AIがプロジェクト全体を把握することで提案の精度向上につながるでしょう。
たとえば、PostgreSQLと連携するバックエンド開発を想像してみてください。Claude Codeを活用すれば、AIがsrcフォルダを直接読み取り、データベースの構成を理解したうえで新しい機能の実装を手伝ってくれます。
また、Docker Composeで立ち上げたコンテナ同士は、同じネットワークでつながっています。そのため、プログラム内の接続先を「db」というサービス名にするだけで、実際のデータベースと連携した動作確認が可能です。
【OS別】Claude CodeをDocker環境で構築する際のポイント

OSによって、Docker環境構築にまつわるトラブルのパターンはさまざまです。ここからは下記のOS別に、注意すべきポイントを、3つにまとめて解説します。
Windows環境:WSL2のパス連携とファイル同期遅延の解消
Windows環境でDockerを動かす際、WSL2(Windows上のLinux環境)に起因するトラブルがよく発生します。とくに注意すべきなのが、次の2点です。
- 不安定な挙動:Windows側のフォルダを使うと、ファイルの変更が反映されなかったり権限エラーが起きたりしやすい
- 動作の遅延:AIは大量のデータを扱うため、Windows側を経由すると処理が重くなりやすい
これらのトラブルは、プロジェクトの保存場所を変えることで大幅に改善可能です。Cドライブ(/mnt/c/…など)にフォルダを置く運用はできる限り避けましょう。
代わりに、WSL2のLinuxファイルシステム側(~/projects/ など)への配置を推奨します。VS Codeを開く際も、WSL2のターミナルから起動すると作業がさらに安定するでしょう。
Mac環境:Apple Silicon(Mチップ)特有のビルドエラー対策
Apple Silicon搭載のMacでDockerを動かす際、アーキテクチャ(CPU設計)の違いによるトラブルに注意が必要です。とくに以下の2点には気をつけましょう。
- 互換性のエラー:ARM64に非対応のイメージを使うと、ビルドや実行時にエラーになることがある
- 処理速度の低下:非対応イメージをエミュレーション(変換)して動かすことも可能だが、動作が重くなりやすい
これらのトラブルを防ぐ基本は、ARM64に対応したベースイメージを使うことです。Node.jsの公式イメージなどは対応しているものが多く、基本的にはそのまま高速に動作します。
どうしても非対応のイメージを使う必要がある場合のみ、Dockerfileやdocker-compose.ymlなどでプラットフォームを「linux/amd64」に指定して回避しましょう。
共通:Dockerのリソース不足によるAIの動作遅延
OSを問わず、Dockerに割り当てたパソコンのリソース(資源)が不足するケースがあります。Claude CodeとDev Containerを組み合わせると、メモリ消費量が大きくなりやすいためです。
リソースが不足すると、コンテナが突然停止したり、Claude Codeの応答が極端に遅くなったりする恐れがあります。こうした事態を防ぐためには、リソースの割り当て上限を引き上げるのが賢明です。
リソース設定の目安としてはメモリ8GB以上、CPU2〜4コア程度が理想です。使用しているパソコンのOSに合わせて設定を見直しましょう。
| Windows環境(WSL2)の場合 | ユーザーフォルダ(C:\Users\ユーザー名など)の直下に.wslconfigファイルを作成し、次のような設定を記述する。その後、パソコンを再起動すれば設定が反映される。 [wsl2] memory=8GB processors=4 |
| Mac環境の場合 | Docker Desktopの「Settings」→「Resources」→「Memory」から、直接スライダーを動かして上限を引き上げる。 |
動作が不安定な場合は、まずはホスト環境に合わせてDockerのリソース設定を確認してください。
Claude Code×Dockerにおけるセキュリティ上の注意点

隔離されたDocker環境を使っても、設定を誤るとセキュリティリスクが増大しかねません。ここからは、安全にClaude Codeを使うためにおさえておくべき注意点を、3つにまとめて解説します。
ホスト環境で「–dangerously-skip-permissions」を実行しない
ホスト環境でClaude Codeのコマンドを実行する際、ハイリスクな「–dangerously-skip-permissions」オプションの使用は避けましょう。
このオプションは、すべての操作確認をスキップする強力な設定です。ホスト環境で実行すると、AIがファイル削除やシステム変更を無制限に行えてしまいます。
万が一データが破壊されても、元に戻すのは困難です。そのため、このオプションを使うとしても、Dockerコンテナ内にとどめるようにしましょう。
コンテナをrootユーザーのまま動かさない
コンテナ内でClaude Codeを「root(管理者)ユーザー」として動かすことは、セキュリティリスクを高めます。
rootユーザーは、コンテナ内の全ファイルを操作できる強力な権限を持っています。万が一コンテナの制限を突破されるようなトラブルが起きた場合、ホスト側のパソコンにまで被害が及びかねません。
この致命的なリスクを防ぐため、基本的には「一般ユーザー」で実行するのが無難です。一般ユーザーで実行するための設定方法は、環境に合わせて下記を参照してください。
| Dev Containersの場合 | devcontainer.jsonのremoteUserに、既存の一般ユーザー(nodeなど)を指定する。 |
| Dockerfileの場合 | 専用の一般ユーザーを作成し、そのユーザーでClaude Codeを実行するよう記述する。 RUN useradd -m -s /bin/bash claudeuser USER claudeuser |
認証情報のマウント設定を誤らない
Claude Codeを動かすには、Anthropic社のAPIと通信するための認証情報が必要です。そのため、ホスト側のAPIキーや設定ファイルを、コンテナへマウント(共有)するケースがあります。
このとき、マウントする範囲の設定を誤ると、情報漏えいのリスクが高まるため注意しましょう。よくあるのが、設定を楽にするために「ホームディレクトリ全体(~/)」をマウントしてしまうケースです。
// 【NG例】ホームディレクトリ全体をマウントしてしまう
{
"mounts": [
"source=${localEnv:HOME},target=/home/node,type=bind"
]
}
マウントする範囲は「必要なディレクトリのみ」に限定するのが大原則です。さらにreadonly(読み取り専用)を指定すれば、万が一の書き換えも防げます。
// 【OK例】設定ファイルのみを「読み取り専用」でマウントする
{
"mounts": [
"source=${localEnv:HOME}/.claude,target=/home/node/.claude,type=bind,readonly"
]
}
そもそもマウントを避けたい場合は、前述のように環境変数を用いて受け渡す方法が安全です。
まとめ
Claude CodeをDocker環境で動かすことは、ローカル環境の保護と自動承認モードの安全な活用を同時に実現する有効な手段です。
導入手法は手軽なDev Containers、連携に強いDocker Compose、シンプルなDockerfileなどがあります。環境や用途に合わせて選びましょう。
Claude CodeをDocker環境で安全に使うために、今回紹介したセキュリティ上の注意点も覚えておいてください。安全で快適なClaude Code環境を構築し、日々の開発スピードを加速させましょう。
