Gemini CLI sandboxを使うためのPodmanセットアップ手順(Windows)

に公開

はじめに

Gemini CLI を安全に利用するための機能である sandbox を動作させるため、Windows 環境にコンテナ実行基盤 Podman をセットアップする手順です。

2025-09-05 時点の最新情報を基にまとめています。


前提条件

項目 内容
OS Windows 10 22H2 / Windows 11 23H2 以降
WSL2 有効化済み(Step-2 で確認)
Gemini CLI インストール済みであること

Step-0 : 管理者 PowerShell を開く

以降のコマンドは 管理者 PowerShell で実行します。
(スタートメニュー → “PowerShell” → 右クリック 管理者として実行


Step-1 : Podman (GitHub Release 版) をインストール

  1. ブラウザで
    https://github.com/containers/podman/releases を開く
    例: podman-installer-windows-amd64.exe など

  2. EXE をダウンロードして実行
    インストーラのオプションはデフォルトで OK

  3. PowerShell を再起動し、バージョン確認

    podman --version
    # Example: podman version 5.1.2
    

Step-2 : WSL2 が有効か確認

wsl -l -v
  • 何も表示されない/“VERSION” 列が 2 になっていれば OK

  • 1 しか無い場合は

    wsl --set-default-version 2
    

    PC を再起動して再度確認。


Step-3 : Podman Machine を作成(初回のみ)

podman machine init --name podman-machine --cpus 4 --memory 4096 --disk-size 20

CPU / メモリ / ディスクは必要に応じ変更


Step-4 : Podman Machine を起動

podman machine start

状態確認:

podman machine list
# STATE が Running になっている
podman info   # JSON が表示されればソケット疎通 OK

Step-5 : デフォルト接続を確認

podman system connection list

podman-machine(Step-3 で付けた名前)の Default 列が true になっていない場合:

podman system connection default podman-machine

Step-6 : Gemini CLI サンドボックスが起動するかテスト

Gemini CLI のサンドボックス環境を起動し、対話プロンプトを開始します。

gemini -s

1回目はイメージ us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.2.x を Pull するため 1〜2分かかります。

コマンドが成功すると、以下のようにGemini CLIの対話プロンプトが起動し、画面下部のステータスバーに sandbox-x.x.x-x のようなコンテナ名が表示されます。

 ███            █████████  ██████████ ██████   ██████ █████ ██████   █████ █████
░░░███         ███░░░░░███░░███░░░░░█░░██████ ██████ ░░███ ░░██████ ░░███ ░░███
  ░░░███      ███     ░░░  ░███  █ ░  ░███░█████░███  ░███  ░███░███ ░███  ░███
    ░░░███   ░███          ░██████    ░███░░███ ░███  ░███  ░███░░███░███  ░███
     ███░    ░███    █████ ░███░░█    ░███ ░░░  ░███  ░███  ░███ ░░██████  ░███
   ███░      ░░███  ░░███  ░███ ░   █ ░███      ░███  ░███  ░███  ░░█████  ░███
 ███░         ░░█████████  ██████████ █████     █████ █████ █████  ░░█████ █████
░░░            ░░░░░░░░░  ░░░░░░░░░░ ░░░░░     ░░░░░ ░░░░░ ░░░░░    ░░░░░ ░░░░░

Tips for getting started:
...

╭─────────────────────────────────────────────────────────────────────────────╮
│ >   Type your message or @path/to/file                                      │
╰─────────────────────────────────────────────────────────────────────────────╯
/c/dev/vibe-coding-handson  sandbox-0.2.2-1   gemini-2.5-pro (100% context)

Podmanの日常運用コマンド

操作 コマンド
VM の停止 podman machine stop
VM の再開 podman machine start
VM の削除 podman machine rm podman-machine

補足: Gemini CLI sandbox の目的とファイルシステム

Gemini CLI の sandbox は、コードを安全に実行するための「隔離された環境」です。これにより、ホストマシン全体に意図せず影響が及ぶことを防ぎます。

ファイルシステムの隔離:

  • gemini -s を実行すると、コマンドを実行したディレクトリ(プロジェクトディレクトリ)のみがコンテナ内にマウントされます。
  • コンテナは、そのディレクトリより上の階層や、兄弟関係にある他のディレクトリに一切アクセスできません。
  • これがサンドボックスの重要なセキュリティ機能です。

より詳細な情報については、公式のサンドボックスドキュメントも参照してください。


よくあるトラブルシューティング

1. gemini -s を実行しても対話プロンプトが起動しない

gemini -s を実行した後、対話プロンプトに移行せずコマンドが終了してしまう場合があります。しかし、コンテナ自体はバックグラウンドで起動している可能性があります。

  1. コンテナの起動確認
    まず podman ps を実行し、STATUSUp のサンドボックスコンテナが存在するか確認します。

    podman ps
    
  2. コンテナへの手動接続
    コンテナが起動している場合、podman exec コマンドで手動で接続できます。

    podman exec -it <コンテナ名> bash
    # 例: podman exec -it sandbox-0.2.2-0 bash
    

2. Cannot connect to Podman socket

  • Podman machine が Stopped
    podman machine start
    
  • 接続が Default でない
    podman system connection default podman-machine
    
  • 127.0.0.1 のループバックポートが FW / Endpoint Security で遮断されている
    → お使いのファイアウォールやセキュリティソフトの設定を確認し、Podmanが必要とするループバック接続を許可してください。

3. sandbox イメージの pull がタイムアウト

プロキシ環境下の場合、PowerShell で環境変数を設定してから gemini -s を実行します。

$env:HTTP_PROXY  = "http://proxy.example.com:8080"
$env:HTTPS_PROXY = "http://proxy.example.com:8080"
gemini -s

恒久的に設定したい場合は、Podman Machine の VM 内に直接設定します。

podman machine ssh
echo '''export HTTP_PROXY=http://proxy.example.com:8080'''  | sudo tee -a /etc/profile
echo '''export HTTPS_PROXY=http://proxy.example.com:8080''' | sudo tee -a /etc/profile
exit

Discussion