コンテンツにスキップ

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.md C5 を参照してください。

最小構成(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 -p 8081:8080 ghcr.io/thirdkeyai/symbi:latest

ビルドの失敗:

# Dockerキャッシュをクリア
docker builder prune -a

# キャッシュなしで再ビルド
docker build --no-cache .

ヘルスチェック

# コンテナのヘルスを確認
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

パフォーマンス最適化

リソース制限

# メモリとCPU制限を設定
docker run --memory=512m --cpus=1.0 \
  ghcr.io/thirdkeyai/symbi:latest mcp

ビルド最適化

# 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(ソフトウェア部品表)