AIエージェントに「好きに動いてもらう」のが怖い理由
ChatGPTやClaudeなどのAIエージェントに、コード生成だけでなく実行まで任せたいと考えたことはないでしょうか。ファイル操作やコマンド実行を自動化してもらえれば作業はぐっと楽になります。ただし、生成されたコードをそのまま自分のPC上で実行するのは正直かなり怖い作業です。意図しないファイル削除や、うっかり外部への通信が発生するリスクをゼロにはできません。
こうした不安を解消する現実的な方法が、Dockerコンテナによる隔離環境(サンドボックス)の中でAIエージェントにコードを実行させることです。ホストのファイルシステムやネットワークから切り離された「使い捨ての箱」の中で動かせば、万が一おかしなコマンドが実行されても被害を最小限に抑えられます。
この記事でできるようになること
本記事では、Dockerの基本機能を使ってAIエージェント専用の実行環境を構築し、安全に運用するための手順を紹介します。特別な有償サービスに頼らなくても、Docker Desktopとコマンドラインの知識だけで十分に実用的な隔離環境が作れます。読み終える頃には、自分の環境に合わせてサンドボックスをカスタマイズできるようになっているはずです。
手順1:Docker Desktopの準備
まずはDocker Desktopをインストールし、正常に動作することを確認します。ターミナルで以下を実行してバージョンが表示されればOKです。
docker --version
すでにDockerを使っている人はこのステップは飛ばして構いません。まずはここだけで大丈夫です。
手順2:エージェント専用の最小構成イメージを作る
次に、AIエージェントの実行に必要な最小限のツールだけを詰め込んだDockerfileを用意します。汎用の重いイメージを使うと起動が遅く、不要なツールが攻撃対象になる可能性もあるため、必要なものだけを入れるのが基本です。
FROM python:3.11-slim
WORKDIR /workspace
RUN pip install --no-cache-dir requests
USER nobody
CMD ["python3"]
ポイントはUSER nobodyのようにroot権限で動かさないことです。権限を最小化するという考え方は、サンドボックス設計全体を通じて意識しておきたい基本方針です。
手順3:ネットワークとリソースを制限して起動する
イメージができたら、実際にコンテナを起動します。ここが一番の要です。
docker run --rm -it \
--network none \
--memory=512m \
--cpus=1 \
-v $(pwd)/sandbox:/workspace:rw \
my-agent-sandbox
--network none:外部との通信を完全に遮断します--memory/--cpus:暴走した処理がホストのリソースを食い尽くすのを防ぎます-v:マウントするディレクトリを必要最小限に絞ります
ポイント:ネットワーク遮断・リソース制限・マウント範囲の最小化、この3点セットが揃っていれば、個人利用レベルのサンドボックスとしてはかなり実用的な水準になります。
手順4:エージェントに実行させてみる
実際にAIエージェントが生成したPythonスクリプトを、このコンテナの中で動かしてみましょう。生成されたコードをファイルとしてsandboxディレクトリに保存し、コンテナ内から実行する流れです。
docker cp generated_script.py <コンテナID>:/workspace/
docker exec <コンテナID> python3 /workspace/generated_script.py
この流れをスクリプト化しておけば、AIエージェント側から「コードを保存→コンテナにコピー→実行→結果を受け取る」という一連の処理を自動化できます。エージェントとサンドボックスの橋渡し部分を自作するのは正直やや面倒ですが、一度組んでしまえば使い回しが効くので、最初の一回だけ頑張る価値はあります。
つまずきやすいポイントと対処
ネットワークを遮断するとパッケージが入らない
--network noneにすると、エージェントが実行時に新しいライブラリをインストールしようとしても失敗します。これは仕様通りの挙動ですが、最初は「なぜ動かないんだろう」と戸惑いやすいポイントです。対処法としては、必要なライブラリはあらかじめDockerfileに含めておき、実行時のネットワークアクセスは基本的に不要な状態に設計しておくのがおすすめです。
ボリュームマウントの範囲が広すぎる
作業のしやすさを優先してホームディレクトリ全体をマウントしてしまうと、せっかくの隔離環境の意味が薄れてしまいます。マウントするディレクトリは、エージェントに触ってほしい範囲だけに絞り込むことを徹底してください。
注意:読み取り専用で十分な場合は`:ro`オプションを付けてマウントすると、意図しない書き込みを防げます。
コンテナの終了忘れ
--rmオプションを付け忘れると、実行が終わったコンテナが残り続けてディスクを圧迫します。個人的にはこのオプションを付け忘れて後からdocker ps -aを見て青ざめた経験があるので、習慣として必ず付けるようにしています。
コンテナが増えすぎて困ったときはdocker container pruneで不要なコンテナを一括削除できます。定期的なお掃除もセットで覚えておくと安心です。
まとめ
AIエージェントに実行権限を渡すことへの不安は、隔離環境をきちんと設計すればかなり軽減できます。いきなり本番運用を目指すのではなく、まずは小さな検証用サンドボックスから試してみるのが現実的な始め方ではないでしょうか。ネットワーク遮断・リソース制限・マウント範囲の最小化という3つの基本を押さえておけば、個人の検証用途としては十分な安全性が確保できます。
Docker周辺では、AIエージェント向けの実行環境をより手軽に扱えるようにする動きも進んでいるため、今後のアップデート情報も注視しておくとよいでしょう。まずは手元のDockerfileから、自分だけの実験環境を育てていってみてください。
スキルを収入に変えるなら
AIツールで身につけたスキルは、クラウドソーシングで仕事にできます。販売手数料が業界最安級の「クラウディア」なら、初心者でも小さく始めやすいのが特徴です。



コメント