コンテンツにスキップ

サンドボックス管理

サンドボックス(Daytonaが管理する隔離された一時的な実行環境)は、Daytonaによって管理される開発用の隔離環境です。本ガイドでは、TS SDK/Python SDKを用いてサンドボックスを作成・管理・削除する方法を解説します。 デフォルトでは、サンドボックスは非アクティブ状態が15分続くと自動停止し、vCPU 1RAM 1GBディスク 3GiBを使用します。

サンドボックスのライフサイクル

ライフサイクル全体を通じて、Daytonaのサンドボックス(Daytonaが管理する隔離された一時的な実行環境)は複数の状態を取り得ます。以下の図は、それぞれの状態と遷移の可能性を示します。

sandbox.delete()
sandbox.delete()
STARTED
STARTED
sandbox.delete()
sandbox.delete()
STOPPED
STOPPED
DELETED
DELETED
d
d
sandbox.delete()
sandbox.delete()
ARCHIVED
ARCHIVED
sandbox.stop()auto-stopsandbox.start()sandbox.archive()auto-archivesandbox.start()
auto-delete
auto-delete

デフォルトでは、サンドボックスは非アクティブな状態が15 minutes続くと自動停止し、停止から7 days後に自動アーカイブされます。中断なく無期限に稼働させるには、作成時に自動停止の値を0に設定してください。

サンドボックスの作成

Daytona SDK は、デフォルトまたはカスタム構成でサンドボックスを作成する機能を提供します。サンドボックスに対して、言語、スナップショット、リソース、環境変数、ボリュームを指定できます。 稼働中のサンドボックスは CPU、メモリ、ディスクストレージを消費します。各リソースは使用秒単位で課金されます。

基本的なサンドボックスの作成

Daytona SDK には、Python と TypeScript により、デフォルト構成、特定の言語、またはカスタムラベルでサンドボックスを作成するメソッドが用意されています。

from daytona import Daytona, CreateSandboxFromSnapshotParams
daytona = Daytona()
# Create a basic Sandbox
sandbox = daytona.create()
# Create a Sandbox with specific language
params = CreateSandboxFromSnapshotParams(language="python")
sandbox = daytona.create(params)
# Create a Sandbox with custom labels
params = CreateSandboxFromSnapshotParams(labels={"SOME_LABEL": "my-label"})
sandbox = daytona.create(params)

サンドボックスが積極的に使用されていない場合は、停止することを推奨します。これは、stop コマンドの使用による手動操作、または自動停止間隔の設定による自動化で行えます。

サンドボックスのリソース

Daytona のサンドボックスは、デフォルトで 1 vCPU1GB RAM3GiB ディスクを備えています。

より高い性能が必要ですか?Resources クラスを使用して、必要な構成を正確に指定できます。CPU、メモリ、ディスク容量はすべてカスタマイズ可能です。

ダッシュボードで利用可能なリソースと上限を確認してください。

from daytona import Daytona, Resources, CreateSandboxFromImageParams, Image
daytona = Daytona()
# Create a Sandbox with custom resources
resources = Resources(
cpu=2, # 2 CPU cores
memory=4, # 4GB RAM
disk=8, # 8GB disk space
)
params = CreateSandboxFromImageParams(
image=Image.debian_slim("3.12"),
resources=resources
)
sandbox = daytona.create(params)

ネットワーク設定

Daytona のサンドボックスは、セキュリティ強化と接続性管理のため、ネットワークアクセス制御を構成可能に提供します。デフォルトでは標準的なセキュリティポリシーに従いますが、サンドボックス作成時にネットワーク設定をカスタマイズできます。

  • すべてのネットワークアクセスをブロックするには、networkBlockAllTrue に設定します
  • 特定のアドレスにアクセスを制限するには、networkAllowList に最大 5 つの CIDR ブロックをカンマ区切りで設定します
from daytona import Daytona, CreateSandboxFromSnapshotParams
daytona = Daytona()
# すべてのネットワークアクセスをブロック
params = CreateSandboxFromSnapshotParams(
network_block_all=True
)
sandbox = daytona.create(params)
# 許可するネットワークアドレスを明示的に指定
params = CreateSandboxFromSnapshotParams(
network_allow_list="192.168.1.0/16,10.0.0.0/24"
)
sandbox = daytona.create(params)

サンドボックス情報

Daytona SDK は、Python と TypeScript で、ID、ルートディレクトリ、状態などサンドボックスに関する情報を取得するためのメソッドを提供します。

# サンドボックス ID を取得
sandbox_id = sandbox.id
# サンドボックスユーザーのルートディレクトリを取得
root_dir = sandbox.get_user_root_dir()
# サンドボックスの ID・自動停止間隔・状態を取得
print(sandbox.id)
print(sandbox.auto_stop_interval)
print(sandbox.state)

特定のポートのプレビュー URL を取得するには、プレビューと認証を参照してください。

サンドボックスの停止と起動

Daytona SDK は、Python と TypeScript でサンドボックスを停止・起動するためのメソッドを提供します。

停止したサンドボックスは、メモリ状態がクリアされますが、ファイルシステムは保持されます。ディスク使用量のコストのみが発生し、必要に応じて再度起動できます。

sandbox = daytona.create(CreateSandboxParams(language="python"))
# Stop Sandbox
sandbox.stop()
print(sandbox.id) # 7cd11133-96c1-4cc8-9baa-c757b8f8c916
# The sandbox ID can later be used to find the sandbox and start it
sandbox = daytona.find_one("7cd11133-96c1-4cc8-9baa-c757b8f8c916")
# Start Sandbox
sandbox.start()

近く再起動する見込みがある場合は、停止状態を利用してください。そうでない場合は、ディスク使用量のコストをなくすため、停止後にサンドボックスをアーカイブすることを推奨します。

サンドボックスのアーカイブ

Daytona SDK は、Python と TypeScript からサンドボックスをアーカイブするためのメソッドを提供します。

サンドボックスをアーカイブすると、ファイルシステム全体の状態がコスト効率の高いオブジェクトストレージに移され、サンドボックスを長期間利用可能な状態で保持できます。 アーカイブされたサンドボックスの起動には、サイズに応じて、停止中のサンドボックスよりも時間がかかります。

サンドボックスはアーカイブ前に停止している必要があり、停止中のサンドボックスと同様の手順で再度起動できます。

# Archive Sandbox
sandbox.archive()

サンドボックスの削除

Daytona SDK には、Python と TypeScript でサンドボックスを削除するためのメソッドが用意されています。

# サンドボックスを削除
sandbox.delete()

自動ライフサイクル管理

Daytona のサンドボックスは、ユーザーが指定した間隔に基づいて自動で停止、アーカイブ、削除できます。

自動停止の間隔

自動停止の間隔パラメータは、稼働中のサンドボックスを自動停止するまでの時間を設定します。

パラメータは次のいずれかで設定できます:

  • 分単位の時間間隔
  • 0(自動停止を無効にし、サンドボックスを無期限に稼働させる)

パラメータが未設定の場合、デフォルトの 15 分が使用されます。

:::

sandbox = daytona.create(CreateSandboxFromSnapshotParams(
snapshot="my-snapshot-name",
auto_stop_interval=0, # 自動停止を無効化 - デフォルトは 15 分
))

自動アーカイブの間隔

自動アーカイブの間隔パラメータは、停止状態が継続しているサンドボックスを自動アーカイブするまでの時間を設定します。

パラメータは次のいずれかで設定できます:

  • 分単位の時間間隔
  • 0(最大間隔の 30 days が適用される)

パラメータが未設定の場合、デフォルトの 7 days が使用されます。

sandbox = daytona.create(CreateSandboxFromSnapshotParams(
snapshot="my-snapshot-name",
auto_archive_interval=60 # 停止後 1 時間で自動アーカイブ
))

自動削除の間隔

自動削除の間隔パラメータは、停止状態が継続しているサンドボックスを自動削除するまでの時間を設定します。デフォルトでは、サンドボックスは自動削除されません。

パラメータは次のいずれかで設定できます:

  • 分単位の時間間隔
  • -1(自動削除を無効化)
  • 0(停止直後に即時削除)

パラメータが未設定の場合、サンドボックスは自動削除されません。

sandbox = daytona.create(CreateSandboxFromSnapshotParams(
snapshot="my-snapshot-name",
auto_delete_interval=60, # 停止後 1 時間で自動削除
))
# 停止直後に即時削除する
sandbox.set_auto_delete_interval(0)
# 自動削除を無効化する
sandbox.set_auto_delete_interval(-1)

無期限で実行

デフォルトでは、サンドボックスは15分間操作がないと自動停止します。中断なくサンドボックスを稼働させ続けるには、新しいサンドボックスを作成する際に自動停止間隔を0に設定してください。

sandbox = daytona.create(CreateSandboxFromSnapshotParams(
snapshot="my-snapshot-name",
auto_stop_interval=0, # 自動停止を無効化(デフォルトは15分)
))