Skip to main content
Agent 環境の設定

コンテナリファレンス

マネージドコンテナのランタイム、ツール、作業ディレクトリ、永続化動作。

このページでは、マネージド cloud Environment で Agent が使用できるコンテナについて説明します。self_hosted Environment の場合、オペレーティングシステム、ツール、リソースはセルフホストランタイムによって決まります。 マネージド Environment では、次の動作を前提にできます:
  • Agent ツールはデフォルトで /data から起動します。
  • config.packages は apt、pip、npm の依存関係をサポートします。
  • config.setup_script はパッケージのインストール後に実行されます。
  • コンテナのファイルシステムは一時的なワークスペースです。永続化する出力は外部に保存する必要があります。

ランタイムとオペレーティングシステム

マネージド Environment の標準イメージは現在 Ubuntu 22.04 LTS をベースとしています。CPU アーキテクチャ、カーネル、コンテナエンジンはランタイム環境によって異なる場合があります。 Session 内で実際の環境を確認できます:
cat /etc/os-release
uname -m
uname -r
ネイティブバイナリを使用する場合は、Session 内でアーキテクチャを検出するか、必要なすべてのアーキテクチャ向けのビルドを用意してください。

現在の標準イメージに含まれるツール

現在の標準イメージには、gitcurlwgetjqvimsshmakecmakegccripgreptarunzip などの一般的なシステムツールが含まれます。 また、次の主要な言語ランタイムが含まれます:
ランタイム現在のメジャーバージョン
Python3.12
Node.js20
Go1.22
Java21
Ruby3.3
PHP8.3
Ruststable
イメージの更新に伴い、プリインストールツールやパッチバージョンは変更されることがあります。タスクで正確なバージョンが必要な場合は Environment で固定し、Session 内で確認してください:
python --version
node --version
go version
java -version
ruby --version
php --version
rustc --version

作業ディレクトリ

Agent ツールのデフォルト作業ディレクトリは次のとおりです:
/data
マネージド Environment では WORK_DIR/data です。ディレクトリを指定しない場合、Bash などのツールは /data から起動します。リポジトリや作業ファイルは /data/workspace/ などのディレクトリに配置してください。 アップロードファイルとリポジトリリソースでは、各リソースの mount_path でマウント先を指定します。詳しくは ファイルとマウント を参照してください。

追加ソフトウェアのインストール

マネージド cloud Environment は、次の config.packages フィールドをサポートします:
フィールドインストール動作
aptapt-get install でシステムパッケージをインストール
pippip install で Python パッケージをインストール
npmnpm install -g で Node.js パッケージをインストール
{
  "config": {
    "type": "cloud",
    "packages": {
      "apt": ["postgresql-client", "redis-tools"],
      "pip": ["pandas==2.2.3"],
      "npm": ["typescript@5.8.3"]
    }
  }
}
packages では表現できない初期化には config.setup_script を使用します。パッケージのインストール後に /bin/bash -lc で実行され、作業ディレクトリは /data、最大サイズは 64 KiB、タイムアウトは 10 分です。

リソースとタイムアウト

利用可能な CPU、メモリ、ディスク、実行タイムアウトは、ランタイム環境とサービス設定によって異なります。固定されたリソース値を前提にタスクを設計しないでください。タスクに最低リソース要件がある場合は、先に対象環境で検証してください。 メモリまたはディスクが不足すると、プロセスが終了したり書き込みに失敗したりすることがあります。長時間実行するタスクでは、ツール単位およびターン単位のタイムアウトも考慮する必要があります。

ファイルの永続化

  • 同じランタイムインスタンスが保持されている間、通常はターンをまたいでファイルが残ります。
  • コンテナの一時ストレージは、24 時間連続して操作がないと回収されることがあります。
  • 回収後に Session を再開すると、プラットフォームはコンテナを再初期化し、必要に応じて Environment とマウント済みリソースを再準備します。外部ストレージに保存していないファイルは失われる可能性があります。
  • Session がアーカイブまたは終了した後は、コンテナファイルが保持されることを前提にしないでください。
コンテナファイルシステムは一時的なワークスペースとして扱ってください。永続化する出力は Files API、Git リポジトリ、またはその他の外部ストレージに保存します。重要なコード変更は速やかに commit と push を行ってください。

実行ユーザーと環境変数

実行ユーザーと HOMEUSERSHELLLANG の値は、ランタイム環境またはカスタムイメージによって異なる場合があります。特定の UID に依存したり、システムディレクトリが常に書き込み可能であると仮定したりしないでください。 必要に応じて現在の Session で確認します:
id
whoami
printf 'HOME=%s\nUSER=%s\nSHELL=%s\nLANG=%s\nWORK_DIR=%s\n' \
  "$HOME" "${USER:-}" "${SHELL:-}" "${LANG:-}" "${WORK_DIR:-}"
Session の environment_variables と、連携した Vault の環境変数 Credential は、ツール呼び出し時に注入されます。ログやタスク出力にシークレットを表示しないでください。

関連ドキュメント