Docker インスタンス管理ガイド
Docker インスタンスは、GIIP エージェントをリモートPC/サーバーにコンテナとして展開し、GIIP Web上で生成・参照・廃棄できる管理者機能です。インスタンストークンを対象PCに伝えてコンテナを起動すると、そのPCがGIIPエージェント(1分ごとのポーリング)と slack-bot(オプション)で動作し始めます。
📋 概要
Docker インスタンス管理ページでは、giip-fde-agent Docker コンテナをリモートPC/サーバーに展開するためのインスタンスを作成し、管理します。インスタンス作成時、GIIPサーバーがAES-256-GCMで認証情報を暗号化して保存し、トークンを1回だけ表示します。
⚠️ この度は管理者専用です。 アクセスするには管理者レベル
uLevel >= 70が必要です。それ未満のユーザーはホームにリダイレクトされます。
🔍 画面構成
1. ヘッダー
- ページタイトル: "Docker インスタンス管理"
- + Create Docker instance ボタン: 新規インスタンス作成モーダルを開きます。
2. インスタンス一覧テーブル
| カラム | 説明 |
|---|---|
| Label | インスタンス名(未設定の場合は #<diSn>) |
| Created | 作成日時 |
| Last fetched | コンテナがトークンで最後にenvを 받아간 時刻。リアルタイム生存確認ではなく「最後の起動時刻」に近い |
| Status | Active(緑)または Revoked(赤)バッジ |
| Actions | Revoke ボタン — トークンを無効化(実行中のコンテナは停止しない) |
⚠️ Last fetched が
-の場合: コンテナがまだ一度も起動していない状態です。手順 ①(手動)または ②(Provision now)をまだ実行していません。
🛠️ インスタンスの作成方法
- + Create Docker instance ボタンをクリックします。
- 必須フィールド3つを入力します。
- GIIP_LOGIN_ID: GIIP ログインアカウント(例:
user@example.com) - GIIP_SK: GIIP シークレットキー(パスワードとは別)
- GIIP_CSN: CSN 番号(例:
47)
- GIIP_LOGIN_ID: GIIP ログインアカウント(例:
- 任意フィールドを入力します。
- Label: インスタンス名(例:
lowy-dp01-docker) - GIIP_PROJECT_NAME: デフォルト
docker - GIIP_WORKDIR: 作業ディレクトリ(任意)
- GIIP_REST_BRANCH: Git ブランチ(任意)
- SLACK_BOT_TOKEN / SLACK_APP_TOKEN / SLACK_CHANNEL_ID: Slack ボット(任意 — 両方必要)
- Enable hourly-issue-scheduler: チェックボックス(デフォルト on) — 毎時
:07に 이슈 スケジューラを実行
- Label: インスタンス名(例:
- Create をクリックします。
トークンは必ずコピーしてください
作成直後、トークンは1回だけ表示されます。
GIIP_INSTANCE_TOKEN=<トークン>
モーダルを閉じると二度と表示されません。 コンテナ起動に必要なため、必ずコピーしてから進んでください。
🛠️ 作成後のコンテナ起動 — 手順 ①(手動、全環境)
トークンをコピーした後、対象PC/サーバーで以下を実行します。
# 1. giip-fde-agent リポジトリをクローン
git clone https://github.com/LowyShin/giip-fde-agent.git
cd giip-fde-agent/docker
# 2. .env ファイルにトークンのみ記述
echo 'GIIP_INSTANCE_TOKEN=<コピーしたトークン>' > .env
# 3. Docker Compose で起動
docker compose up -d --build
.envに トークン1行だけで十分です。 他の環境変数はfetch-instance-env.shがdockerInstanceFetchAPI(トークン自体が認証情報)でサーバーから自動取得します。.envに直接キーを記述すると その値が優先します(部分的上書き可能)。
🛠️ 作成後のコンテナ起動 — 手順 ②(リモート Provision now)
対象PCにすでに GIIP エージェントが動作していて lssn がある場合にのみ使用可能です。
- トークン表示エリアの lssn 入力欄に対象PCの lssn を入力します。
- [Provision now] ボタンをクリックします。
- CQE キューにブートストラップスクリプト(mssn=6122)が登録され、即時強制実行(
CQERunForce)されます。
⚠️ このボタンは GIIP エージェントがインストールされた PC でのみ動作します。 エージェントがない場合は手順 ① を使用してください。
⚠️ スクリプト所有権制約: ブートストラミングクリプトは特定の所有者アカウントで実行されます。異なるアカウントからこのボタンをクリックすると失敗しますが、インスタンス作成自体は既に完了しておりトークンは有効です。 この場合、手順 ①(手動)で進んでください。
⚠️ 最大1分かかる: 対象PCのGIIPエージェントは約60秒ごとにポーリングするため、最大1分待ちます。
🔍 作成後の「接続」確認 — 3つの方法
GIIP Web内にコンテナに接続するターミナルはありません。 確認は以下の3つの方法です。
1. コンテナシェルへの接続(対象PC上)
docker exec -it giip-fde-agent bash
コンテナ名は giip-fde-agent(固定)です。
2. ログ確認(対象PC上)
docker compose logs -f # docker/ ディレクトリから
docker logs -f giip-fde-agent # どこからでも可
正常に起動すると次のメッセージが表示されます:
[entrypoint] cloned ...[fetch-instance-env] env applied from GIIP_INSTANCE_TOKEN[entrypoint] registered giipAgentLinux cron (every 1 min)[entrypoint] ready. tailing logs.
3. GIIP Web での確認 — lsvrlist(サーバー一覧)
これが「GIIP Web での接続確認」の正統な方法です。
コンテナ起動時:
giipAgentLinuxをクローンします。giipAgent.cnf(sk=登録した GIIP_SK、lssn="0")を作成します。- 1分ごとに
giipAgent3.shを実行します。 - GIIP が lssn を自動割り当て、以降同じ lssn でハートビートを送信します。
- その後、このコンテナが 他のサーバーと同じ lsvrlist 一覧に表示されます。
確認パス: /ja/lsvrlist → 該当 lssn をクリック → lsvrdetail で tLSvr.lsChkdt ハートビートで生存確認
⚠️
GIIP_SKがない場合またはGIIP_ENABLE_AGENT=falseの場合、この登録は行われず、GIIP Web でコンテナの状態をまったく確認できません。
4. Slack での確認(Slack ボット設定時)
SLACK_BOT_TOKEN と SLACK_APP_TOKEN の両方を入力した場合にのみ、slack-bot が pm2 で起動されます。指定チャンネルでボットが応答すれば正常です。
⚠️ どちらかのトークンが欠けるとスキップされます — 片方だけでは何も起動しません。
💡 参考
- Last fetched ≠ リアルタイム生存状態: Last fetched は「最後に env を受け取った時刻」です。コンテナが停止해도 이 値은 변경되지 않습니다。リアルタイムの状態は lsvrlist のハートビートで確認します。
- Revoke は行を削除しません: Revoke はトークンを無効化するだけで一覧行を削除しません。監査証跡として
Revokedバッジーと一緒に残ります。 - Revokeしても実行中のコンテナは停止しません。 実際に停止するには対象PCで
docker compose downを実行する必要があります。 - コンテナ名は常に
giip-fde-agent:docker-compose.ymlのcontainer_nameで固定です。
問題 해결
| 症状 | 原因 | 解決 |
|---|---|---|
| トークンを控えていなかった | 再取得不可 | 既存のインスタンスを Revoke し、新規作成してください。 |
docker compose up は成功したが lsvrlist に表示されない | (a) GIIP_ENABLE_AGENT=false (b) GIIP_SK が空 (c) 最初のポーリング前 (d) 認証エラー(401) | docker logs の /work/giipAgentLinux/log/cron.log で 401 エラーを確認 |
| 再起動ごとに新しい lssn で登録される | /work ボリュームが消失 | docker-compose.yml のボリュームが giip-fde-agent-data:/work(まるごと永続化)か確認 |
| [Provision now] が失敗する | ブートストラミングクリプト所有者アカウント不一致 | 手順 ①(手動 docker compose up)で進んでください。トークンは有効です。 |
| Slack ボットが起動しない | SLACK_BOT_TOKEN と SLACK_APP_TOKEN の両方が必要 | 片方だけではどちらもスキップされます。 |
| アクセス直後にホームにリダイレクト | uLevel が 70 未満 | 管理者アカウント(レベル 70+)でログインしてください。 |
バージョン: 1.0
最終更新: 2026-09-22 (giip #2847)
ソースファイル: giipv3/public/help/docker-instances.ja.md