Claude Code devcontainer導入手順|開発コンテナで動かす

公開 更新 著者 永上裕之導入とルール
大きな箱の中でAIが作業し、外のパソコンには手元のファイルの変更だけが届く様子を説明しているイメージ

この記事の要点

  • 開発コンテナに Claude Code を入れると、AIが実行するコマンドはコンテナの中で動き、ファイルの変更だけが手元のリポジトリに届く
  • 入れ方は devcontainer.json の features に1行足して作り直し、claude でログインするだけ
  • 作り直しでログインが消えないよう ~/.claude を名前付きボリュームにし、CLAUDE_CONFIG_DIR を同じ場所に向ける

「チームの全員が同じ道具・同じバージョンで作業したい」「AIが実行するコマンドを、自分のパソコンから切り離しておきたい」。そんなときに役立つのが 開発コンテナ(dev container) です。

この記事では、公式ドキュメント「Development containers」(2026年11月1日確認)にもとづいて、Claude Code を開発コンテナに入れる手順と、あわせて決めておきたい設定を番号順にまとめます。

そもそも何がうれしいのか

開発コンテナに Claude Code を入れると、AIが実行するコマンドはコンテナの中で動き、プロジェクトのファイルへの変更は手元のリポジトリにそのまま反映されます。 チームの全員が同じ中身の環境を使えるのも利点です。

項目手元で直接動かす開発コンテナで動かす
コマンドが動く場所自分のパソコンコンテナの中
道具やバージョン人によって違うことがある全員同じ定義から作られる
ファイルの変更手元に反映手元のリポジトリに反映
対応するエディタ何でもVS Code、GitHub Codespaces、JetBrains、Cursor など Dev Containers 仕様に対応したもの

ただし公式ドキュメントは、どんな仕組みでもすべての攻撃を防げるわけではない と注意しています。使うのは信頼できるリポジトリだけにし、AIの動きを見守ることが前提です。安全の考え方全体は Claude Codeのセキュリティ でまとめています。

入れ方:3ステップ

devcontainer.json に1行足して作り直し、ログインするだけ で使い始められます。ここでは VS Code を例にします。

手順1:devcontainer.json を作る・書き足す

リポジトリの .devcontainer/devcontainer.json に次のように書きます。すでにファイルがあるなら features の部分だけ足します。

{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
  }
}

image の行は自分のプロジェクトの土台のイメージに置き換えます(Dockerfile を使っているなら消します)。

手順2:コンテナを作り直す

コマンドパレット(Mac は Cmd+Shift+P、Windows と Linux は Ctrl+Shift+P)を開き、Dev Containers: Rebuild Container を実行します。

手順3:ログインする

作り直したコンテナのターミナルで claude を実行し、表示に従ってログインします。Anthropic のアカウントならブラウザでサインインします。Amazon Bedrock などクラウド経由の場合は、そのクラウドの認証情報が使われ、ブラウザの画面は出ません。

入れるときの注意

末尾の :1.0 は インストール用の仕組みのバージョン で、Claude Code 本体のバージョンではありません。本体は最新版が入り、コンテナの中でも自動で更新されます。

Node.js が入っていない土台では、この仕組みが自動で Node.js を入れます。もし Failed to install Node.js and npm で止まったら、features の中で Claude Code より前に "ghcr.io/devcontainers/features/node:1": {} を足して作り直します。

ブラウザが開かない、または localhost の接続エラーになったときは、ターミナルの貼り付け欄の上に出るログイン用URLを手元のブラウザで開き、表示されたコードを貼り付けます。

作り直してもログインを消さない

何もしないと、コンテナを作り直すたびにホームフォルダが消え、ログインし直しになります。 Claude Code はログイン情報・自分用の設定・会話の履歴を ~/.claude に、アカウント情報などを ~/.claude.json に保存しているためです。

両方を残すには、次の2つをセットで設定します。

  1. ~/.claude に名前付きボリュームをつなぐ
  2. 環境変数 CLAUDE_CONFIG_DIR を同じ場所に向け、.claude.json もボリュームの中に書かせる
"mounts": [
  "source=claude-code-config,target=/home/node/.claude,type=volume"
],
"containerEnv": {
  "CLAUDE_CONFIG_DIR": "/home/node/.claude"
}

/home/node は、コンテナの remoteUser のホームフォルダに置き換えます。ボリュームをつないだのに初回の設定が毎回出る なら、CLAUDE_CONFIG_DIR が抜けていないかを確かめます。プロジェクトごとに分けたいときは、ボリュームの名前に ${devcontainerId} を含めます。

組織の方針をそろえる

全員が同じコンテナを使うので、組織の方針を配る場所としても便利です。 Linux では /etc/claude-code/managed-settings.json が最も強い設定として読まれます。Dockerfile でこのファイルを置けば、各自の ~/.claude やプロジェクトの .claude/ よりも優先されます。設定ファイルの強さの順番は Claude Codeのsettings.json入門 で詳しく説明しています。

ただし Dockerfile はリポジトリの中にあるので、書き込める人なら変えられます。編集で外されては困る方針 は、管理画面から配る仕組み(server-managed settings)や MDM で配るよう、公式ドキュメントはすすめています。

コンテナ全体に効かせたい環境変数は containerEnv に書きます。たとえば次の2つは、必須ではない通信と自動更新を止める例です。

環境変数効果
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC利用状況の送信やエラー報告などを止める(Remote Control など一部の機能は使えなくなる)
DISABLE_AUTOUPDATERインストール後の自動更新を止める

バージョンを固定したいときは、この仕組みを使わずに Dockerfile で npm install -g @anthropic-ai/claude-code@X.Y.Z のように入れ、DISABLE_AUTOUPDATER を 1 にします。

外への通信をしぼる

コンテナの外への通信を、Claude Code に必要な行き先だけに絞ることもできます。 公式の見本のコンテナには、許可した行き先以外への通信を止める init-firewall.sh が入っています。コンテナの中で通信を制限するために NET_ADMIN と NET_RAW の権限を足していますが、これは Claude Code の動作に必須ではなく、自分たちのネットワーク側の制御で代えてもかまいません。

確認なしで動かすときの注意

--dangerously-skip-permissions は、確認の画面を出さずに動かす指定です。 コンテナが一般ユーザーで動き、コマンドがコンテナの中に閉じているので使える、とされていますが、次の点を必ず押さえます。

確認を減らしつつ安全の確認は残したいなら、実行前に判定の仕組みが動く auto mode を検討します。組織として使わせたくない場合は、組織の管理の設定で permissions.disableBypassPermissionsMode を "disable" にします。Claude Code 自体のサンドボックスとの違いは Claude Codeのサンドボックス を参考にしてください。

まとめ

出典

永上裕之

ユニコスクール株式会社 代表取締役。AIエージェント専門のスクール&コミュニティを運営しています。

この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。

関連する記事