Dockerコンテナガイド¶
他の言語¶
利用可能なイメージ¶
統合Symbiコンテナ¶
- イメージ:
ghcr.io/thirdkeyai/symbi:latest - 用途:DSLパーシング、エージェントランタイム、MCPサーバーを含むオールインワンコンテナ
- サイズ:約80MB(ベクトルDBとHTTP APIサポートを含む)
- CLI:異なる操作のためのサブコマンドを備えた統合
symbiコマンド
クイックスタート¶
プロジェクトをスキャフォールドして実行(推奨)¶
symbi init はコンテナ内で動作し、すぐに実行可能な docker-compose.yml と、新しく生成された SYMBIONT_MASTER_KEY を含む .env を含むプロジェクトをホストディレクトリに書き込みます:
# 1. ホストにプロジェクトファイルを作成
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
init --profile assistant --no-interact --dir /workspace
# 2. ランタイムを起動(.env を自動的に読み込む)
docker compose up
--dir /workspace フラグは、イメージの WORKDIR ではなくマウントされたボリュームに書き込むよう symbi init に指示します。この実行後、カレントディレクトリに symbiont.toml、agents/、policies/、.symbiont/audit/、AGENTS.md、docker-compose.yml、.env、および .env.example が作成されます。
コンポーズファイルの生成をスキップするには:
docker run --rm -v $(pwd):/workspace ghcr.io/thirdkeyai/symbi:latest \
init --profile minimal --no-interact --no-docker-compose --dir /workspace
ビルド済みイメージの使用(アドホック)¶
# 最新イメージをプル
docker pull ghcr.io/thirdkeyai/symbi:latest
# エージェント定義をパース(`.symbi`;後方互換のため `.dsl` も受け付け)
docker run --rm -v $(pwd):/workspace \
ghcr.io/thirdkeyai/symbi:latest \
dsl --file /workspace/agent.symbi
# MCPサーバーを実行(stdioベース、ポート不要)
docker run --rm -i \
ghcr.io/thirdkeyai/symbi:latest \
mcp
# プロジェクトなしでランタイムを実行(エフェメラル、マスターキーなし)
docker run --rm -p 8080:8080 -p 8081:8081 \
ghcr.io/thirdkeyai/symbi:latest \
up --http-bind 0.0.0.0
開発ワークフロー¶
# インタラクティブ開発
docker run --rm -it -v $(pwd):/workspace \
ghcr.io/thirdkeyai/symbi:latest bash
# ボリュームマウントとポート付きの開発
docker run --rm -it \
-v $(pwd):/workspace \
-p 8080:8080 \
-p 8081:8081 \
ghcr.io/thirdkeyai/symbi:latest bash
利用可能なタグ¶
latest- 最新の安定リリースmain- 最新の開発ビルドv1.0.0- 特定バージョンのリリースsha-<commit>- 特定コミットのビルド
ローカルビルド¶
統合Symbiコンテナ¶
# プロジェクトルートから
docker build -t symbi:latest .
# ビルドをテスト
docker run --rm symbi:latest --version
# DSLパーシングをテスト
docker run --rm -v $(pwd):/workspace symbi:latest dsl --help
# MCPサーバーをテスト
docker run --rm symbi:latest mcp
マルチアーキテクチャサポート¶
イメージは以下のアーキテクチャ向けにビルドされます:
- linux/amd64(x86_64)
- linux/arm64(ARM64/Apple Silicon)
Dockerはプラットフォームに応じて正しいアーキテクチャを自動的にプルします。
セキュリティ機能¶
非rootユーザー実行¶
- コンテナは非rootユーザー
symbi(UID 1000)として実行 - セキュリティ強化されたベースイメージによる最小限の攻撃対象
脆弱性スキャン¶
- すべてのイメージはTrivyで自動スキャン
- セキュリティアドバイザリーはGitHub Securityタブに公開
- 詳細な脆弱性分析のためのSARIFレポート
設定¶
環境変数¶
Symbiコンテナ:
- SYMBIONT_MASTER_KEY - 永続状態には必須。 ローカルストアの暗号化に使用される 32 バイトの 16 進数キー。openssl rand -hex 32 で生成します。symbi init は自動的に .env に書き込みます。
- RUST_LOG - ログレベルの設定(debug、info、warn、error)
- SYMBIONT_VECTOR_BACKEND - ベクトルバックエンド:lancedb(デフォルト)または qdrant
- QDRANT_URL - QdrantベクトルデータベースURL(オプションのQdrantバックエンド使用時のみ)
- OPENROUTER_API_KEY / OPENAI_API_KEY / ANTHROPIC_API_KEY - オプションの LLM 資格情報。いずれか一つで Coordinator Chat エンドポイントが有効になります。
ボリュームマウント¶
イメージは symbi ユーザー(UID 1000)として WORKDIR=/var/lib/symbi で実行されます。プロジェクトファイルはそのディレクトリに読み取り専用でマウントされます。永続状態(ローカル SQLite ストアと監査ログ)は、コンテナの再起動後も残るよう名前付きボリュームに格納されます。
# プロジェクトファイル(読み取り専用)
-v $(pwd)/symbiont.toml:/var/lib/symbi/symbiont.toml:ro
-v $(pwd)/agents:/var/lib/symbi/agents:ro
-v $(pwd)/policies:/var/lib/symbi/policies:ro
-v $(pwd)/tools:/var/lib/symbi/tools:ro
# 永続状態
-v symbi-data:/var/lib/symbi/.symbi
-v symbi-audit:/var/lib/symbi/.symbiont
Docker Composeの例¶
symbi init は、このセクションの他の部分と一致するすぐに実行可能な docker-compose.yml を生成します — コンポーズファイルを手書きするよりもこれを優先してください。参考のため、または init なしで始める場合:
デフォルトでは、SymbiontはLanceDBを組み込みベクトルデータベースとして使用します -- 外部サービスは不要です。スケールされたデプロイメント向けに分散ベクトルバックエンドが必要な場合は、オプションでQdrantを追加できます。
セキュリティデフォルト(v1.13.0 監査後)。 同梱の
docker-compose.test.ymlは、環境内にSYMBIONT_API_TOKENが設定されていることを必須とし(デフォルトなし —testtoken123は削除されました)、公開ポートを0.0.0.0ではなく127.0.0.1にバインドします。さらにランタイムは、ちょうどtesttoken123であるトークン、またはtestで始まり 20 文字未満のトークンを拒否します。これにより、歴史的デフォルトの偶発的な再デプロイが防止されます。必須変数については.env.exampleを、根拠についてはSECURITY_AUDIT.mdC5 を参照してください。
最小構成(LanceDBデフォルト -- Qdrant不要)¶
これを SYMBIONT_MASTER_KEY を設定する .env ファイルと組み合わせてください:
services:
symbi:
image: ghcr.io/thirdkeyai/symbi:latest
command: ["up", "--http-bind", "0.0.0.0"]
ports:
- "8080:8080"
- "8081:8081"
volumes:
- ./symbiont.toml:/var/lib/symbi/symbiont.toml:ro
- ./agents:/var/lib/symbi/agents:ro
- ./policies:/var/lib/symbi/policies:ro
- ./tools:/var/lib/symbi/tools:ro
- symbi-data:/var/lib/symbi/.symbi
- symbi-audit:/var/lib/symbi/.symbiont
environment:
SYMBIONT_MASTER_KEY: ${SYMBIONT_MASTER_KEY:?set SYMBIONT_MASTER_KEY in .env}
RUST_LOG: ${RUST_LOG:-info}
restart: unless-stopped
volumes:
symbi-data:
symbi-audit:
オプションのQdrantバックエンド付き¶
services:
symbi:
image: ghcr.io/thirdkeyai/symbi:latest
command: ["up", "--http-bind", "0.0.0.0"]
ports:
- "8080:8080"
- "8081:8081"
volumes:
- ./symbiont.toml:/var/lib/symbi/symbiont.toml:ro
- ./agents:/var/lib/symbi/agents:ro
- ./policies:/var/lib/symbi/policies:ro
- symbi-data:/var/lib/symbi/.symbi
- symbi-audit:/var/lib/symbi/.symbiont
environment:
SYMBIONT_MASTER_KEY: ${SYMBIONT_MASTER_KEY:?set SYMBIONT_MASTER_KEY in .env}
RUST_LOG: ${RUST_LOG:-info}
SYMBIONT_VECTOR_BACKEND: qdrant
QDRANT_URL: http://qdrant:6334
depends_on:
- qdrant
restart: unless-stopped
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333"
- "6334:6334"
volumes:
- qdrant-data:/qdrant/storage
volumes:
symbi-data:
symbi-audit:
qdrant-data:
トラブルシューティング¶
よくある問題¶
権限拒否:
# 正しいオーナーシップを確認
sudo chown -R 1000:1000 ./data
# または別のユーザーを使用
docker run --user $(id -u):$(id -g) ...
ポートの競合:
ビルドの失敗:
ヘルスチェック¶
# コンテナのヘルスを確認
docker run --name symbi-test -d ghcr.io/thirdkeyai/symbi:latest up --http-bind 0.0.0.0:8080
docker exec symbi-test /usr/local/bin/symbi --version
docker rm -f symbi-test
パフォーマンス最適化¶
リソース制限¶
ビルド最適化¶
# BuildKitを使用してビルドを高速化
DOCKER_BUILDKIT=1 docker build .
# マルチステージキャッシング
docker build --target builder -t symbi-builder .
docker build --cache-from symbi-builder .
CI/CDインテグレーション¶
GitHub Actionsは以下のタイミングで自動的にコンテナをビルドおよび公開します:
- main ブランチへのプッシュ
- 新しいバージョンタグ(v*)
- プルリクエスト(ビルドのみ)
イメージにはメタデータが含まれます: - GitコミットSHA - ビルドタイムスタンプ - 脆弱性スキャン結果 - SBOM(ソフトウェア部品表)