Gemini-CLIをDockerコンテナ内で限定して動作させてみる


※ 当ページには【広告/PR】を含む場合があります。
2025/07/09
Vercelの生成AIサービス「v0」で簡単なWebページデザインを始めてみる
蛸壺の技術ブログ|Gemini-CLIをDockerコンテナ内で限定して動作させてみる

AI開発ツールの進化は日々目覚ましいものがあります。

個人的には(趣味も兼ねているので)まだまだ人力でのプログラミングでコツコツと作り上げていくスタイルがほとんどですが、数年後の状況を考えると、周りは皆、AIエージェントによる「Vibeコーディング」の全盛期を迎えるのかもしれません...。

もちろん、数年後のことは分からないのですが、来たるべき大きな潮流に、そのままその波に乗れるように少しづつVibeコーディングにも慣れておきたいものです。

で、今回はちょっと前からチラホラ話題となっているGoogleのコマンドラインベースのAIワークフローツール・
『Gemini CLI』を個人的に使いこなすための方針づくりを防備録としてまとめた記事になります。


合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート・2025年最新】nodejsをこれから学びたい人のためのオススメ書籍&教材特集

NodejsコンテナにGemini-CLIを導入する

ここでのGemini-CLI開発環境構築の前提として、

            + ホストマシン(開発用パソコン等)にはNodejsをインストールさせたくない
+ Gemini-CLIはDocker内部で動作させ、グローバルインストールはしない
        
ということを念頭に進めていきます。

そもそもGemini-CLIには独自に「Sandbox」という機能モードが備わっていますが、ユーザーによるカスタマイズ性がイマイチです。

先にこのSandbox機能に関して軽く説明しておきましょう。

Gemini-CLIのSandbox

Gemini-CLIに限らず、AIエージェントにデスクトップでの様々な操作を行わせたい場合、心配になるのが、「AIがユーザーの意図を越えて好き勝手に色んなことをやってしまう」リスクです。

例えば、外部へ通信させてほしくない情報がAIの処理で漏れてしまったり、セキリュティ面で重要なクレデンシャル変数(.envなど)を編集して破壊してしまったり、様々な影響を与えてしまうおそれがあります。

そこで、このような影響をDockerなどのコンテナ技術を利用して、AIエージェントにアクセスできるファイルやプロセスの範囲を限定させる機能が
Sandbox(=砂場)です。

文字通り、子どもが遊べる場所が"砂場"の中だけで、その外では遊ばせないようにさせるイメージです。

一見すると便利に使えそうなサンドボックス機能ですが、ホストOSにNode.jsとDocker/Podmanをインストールし、その上でGemini-CLIをグローバルインストールしないと使えません。

つまり、DockerでNodeコンテナを起動させ、そのコンテナ内にGemini-CLIをインストールさせて使う場合、そもそも"サンドボックス化"しているので、Gemini-CLIのサンドボックス機能を使う必要がありません。

NodeコンテナにGemini-CLIをインストールする

話は逸れましたので、話を戻してNodeコンテナへGemini-CLIを導入していきます。

著者のホストマシーンですが、Debian Linuxを使っています。

            $ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 12 (bookworm)
Release:	12
Codename:	bookworm
        
当然、Docker/Docker-Composeが動くこと前提です。インストール方法は以下の記事内容を参考してください。

参考|Dockerインストール手順

適当なフォルダを作成し、そこにDocker関連のファイルを作成します。

            $ touch Dockerfile compose.yml .env
        
これらのファイルを以下の内容で編集しておきます。

            FROM node:24-bookworm-slim

RUN apt update && apt upgrade -y

RUN apt install curl -y

ENV PS1="[\u@\h:\w]$"

CMD ["bash"]
        

            services:
  app:
    image: gemini-cli-dev:node24
    build: .
    container_name: gemini-cli-dev
    user: "node:node"
    environment:
      NODE_ENV: ${NODE_ENV}
    volumes:
      - ./:/usr/src/app
    working_dir: "/usr/src/app"
    tty: true
        

            NODE_ENV=development
        
ファイルを編集したら、イメージをビルドさせてみます。

            $ docker compose build
        
問題なくイメージがビルドできたら、コンテナを起動し、インタラクティブモードにアタッチし中に入って作業を進めます。

            $ docker compose up -d && docker compose exec app bash
#...コンテナ内にアタッチ
        
ここからは簡単なnodejsプロジェクトを作ります。

手動で
package.jsonファイルを作るか、yarn initで初期化するとpackage.jsonが作成されます。

適当だと以下のようなファイルで結構です。

            {
    "name": "my-gemini",
    "version": "0.0.1",
    "description": "To learn gemini-cli",
    "private": true,
    "scripts": {}
}
        
では待望のGemini-CLIをローカルインストールしましょう。

            $ yarn add -D @google/gemini-cli
        
npxコマンドでも良いのですが、ローカルインストールしたため、そのままだとgeminiコマンドが呼び出せません。

ここではyarnのサブコマンドとして利用する方式で、
package.jsonのスクリプトタグに追加しておきます。

            {
//...
    "scripts": {
        //👇追加
        "gemini": "gemini",
//...
        
さて、最初のGemini-CLI起動ですが、--debugコマンドありで開始するのがポイントです。

            $ yarn gemini --debug
        
ここからは対話的な設定操作に入ります。

合同会社タコスキングダム|蛸壺の技術ブログ

まずは、CLIの外観を選ぶようです。ここではDefaultにしておきます。

次に認証モードを選択します。

合同会社タコスキングダム|蛸壺の技術ブログ

3つほど選択肢がありますが、とりあえずご自身のGoogleアカウントで認証する
「Login with Google」を選択しておきます。

合同会社タコスキングダム|蛸壺の技術ブログ

こちらのコンテナで、認証待ちを行わせている状態しておき、表示されたURLアドレスを適当なブラウザで開いてみましょう。

合同会社タコスキングダム|蛸壺の技術ブログ

合同会社タコスキングダム|蛸壺の技術ブログ

ご自身のGoogleアカウントでログインします。

合同会社タコスキングダム|蛸壺の技術ブログ
            
        
            
        
            
        

            
        
            
        
            
        

記事を書いた人

記事の担当:taconocat

ナンデモ系エンジニア

カテゴリー