---
title: サンドボックス管理
---

import sandboxDiagram from '@assets/docs/sandbox-states.svg?raw'
import { TabItem, Tabs } from '@astrojs/starlight/components'
import Image from 'astro/components/Image.astro'

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

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

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

<Fragment set:html={sandboxDiagram} />

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

## サンドボックスの作成

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

:::tip
自動停止の間隔を延長したい場合は、サンドボックス作成時に[自動停止間隔パラメータを設定](/docs/ja/sandboxes#auto-stop-interval)できます。
:::

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

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    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)

    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    import { Daytona } from '@daytona/sdk';

    const daytona = new Daytona();

    // Create a basic Sandbox
    const sandbox = await daytona.create();

    // Create a Sandbox with specific language
    const sandbox = await daytona.create({ language: 'typescript' });

    // Create a Sandbox with custom labels
    const sandbox = await daytona.create({ labels: { SOME_LABEL: 'my-label' } });
    ```
  </TabItem>
</Tabs>

サンドボックスが積極的に使用されていない場合は、停止することを推奨します。これは、[stop コマンドの使用](/docs/ja/sandboxes#stop-and-start-sandbox)による手動操作、または[自動停止間隔の設定](/docs/ja/sandboxes#auto-stop-and-auto-archive)による自動化で行えます。

:::note
Daytona はデフォルトのスナップショットを用いたウォーム状態のサンドボックスプールを維持しています。\
利用可能な場合はコールドブートせず、ミリ秒単位でサンドボックスが起動します。
:::

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

Daytona のサンドボックスは、デフォルトで **1 vCPU**、**1GB RAM**、**3GiB ディスク**を備えています。

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

[ダッシュボード](https://app.daytona.io/dashboard/limits)で利用可能なリソースと上限を確認してください。

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    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)

    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    import { Daytona, Image } from "@daytona/sdk";

    async function main() {
      const daytona = new Daytona();

      // Create a Sandbox with custom resources
      const sandbox = await daytona.create({
        image: Image.debianSlim("3.13"),
        resources: {
          cpu: 2, // 2 CPU cores
          memory: 4, // 4GB RAM
          disk: 8, // 8GB disk space
        },
      });
    }

    main();
    ```
  </TabItem>
</Tabs>

:::note
すべてのリソースパラメータは任意です。指定しない場合、Daytona は選択した言語やユースケースに適したデフォルト値を使用します。
:::

### ネットワーク設定

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

- すべてのネットワークアクセスをブロックするには、`networkBlockAll` を `True` に設定します
- 特定のアドレスにアクセスを制限するには、`networkAllowList` に最大 5 つの CIDR ブロックをカンマ区切りで設定します

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    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)

    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    import { Daytona } from '@daytona/sdk';

    const daytona = new Daytona();

    // すべてのネットワークアクセスをブロック
    const sandbox = await daytona.create({
      networkBlockAll: true
    });

    // 許可するネットワークアドレスを明示的に指定
    const sandbox = await daytona.create({
      networkAllowList: '192.168.1.0/16,10.0.0.0/24'
    });
    ```
  </TabItem>
</Tabs>

:::caution
信頼できないコードを実行する場合、無制限のネットワークアクセスを有効にするとセキュリティリスクが生じる可能性があります。
代わりに、`networkAllowList` を使用して特定のネットワークアドレスを許可リストに追加するか、`networkBlockAll` を使用してすべてのネットワークアクセスをブロックすることを推奨します。
:::

## サンドボックス情報

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    # サンドボックス ID を取得
    sandbox_id = sandbox.id

    # サンドボックスユーザーのルートディレクトリを取得
    root_dir = sandbox.get_user_root_dir()

    # サンドボックスの ID・自動停止間隔・状態を取得
    print(sandbox.id)
    print(sandbox.auto_stop_interval)
    print(sandbox.state)

    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    // サンドボックス ID を取得
    const sandboxId = sandbox.id;

    // サンドボックスユーザーのルートディレクトリを取得
    const rootDir = await sandbox.getUserRootDir();

    // サンドボックスの ID・自動停止間隔・状態を取得
    console.log(sandbox.id)
    console.log(sandbox.autoStopInterval)
    console.log(sandbox.state)
    ```
  </TabItem>
</Tabs>

特定のポートのプレビュー URL を取得するには、[プレビューと認証](/docs/ja/preview-and-authentication)を参照してください。

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

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

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    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 get the sandbox and start it

    sandbox = daytona.get("7cd11133-96c1-4cc8-9baa-c757b8f8c916")

    # Start Sandbox

    sandbox.start()

    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    const sandbox = await daytona.create({ language: 'typescript' });

    // Stop Sandbox
    await sandbox.stop();

    console.log(sandbox.id) // 7cd11133-96c1-4cc8-9baa-c757b8f8c916

    // The sandbox ID can later be used to get the sandbox and start it

    const sandbox = await daytona.get("7cd11133-96c1-4cc8-9baa-c757b8f8c916");

    // Start Sandbox
    await sandbox.start();
    ```
  </TabItem>
</Tabs>

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

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

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

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

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    # Archive Sandbox
    sandbox.archive()
    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    // Archive Sandbox
    await sandbox.archive();
    ```
  </TabItem>
</Tabs>

## サンドボックスの削除

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    # サンドボックスを削除
    sandbox.delete()
    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    // サンドボックスを削除
    await sandbox.delete();
    ```
  </TabItem>
</Tabs>

:::tip
ターミナルからサンドボックスを管理したい場合は、[Daytona CLI](/docs/ja/getting-started#cli)をご確認ください:

```bash
daytona sandbox list
```

```text

    Sandbox               State           Region        Last Event
    ────────────────────────────────────────────────────────────────────────────────────
    ugliest_quokka        STARTED         us            1 hour ago

    associated_yak        STARTED         us            14 hours ago

    developed_lemur       STARTED         us            17 hours ago

```

```bash
daytona sandbox start|stop|remove --all
```

```text
すべてのサンドボックスを削除しました
```

:::

## 自動ライフサイクル管理

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

### 自動停止の間隔

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

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

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

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

:::

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    sandbox = daytona.create(CreateSandboxFromSnapshotParams(
        snapshot="my-snapshot-name",
        auto_stop_interval=0,  # 自動停止を無効化 - デフォルトは 15 分
    ))
    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    const sandbox = await daytona.create({
        snapshot: "my-snapshot-name",
        autoStopInterval: 0, // 自動停止を無効化 - デフォルトは 15 分
    });
    ```
  </TabItem>
</Tabs>

### 自動アーカイブの間隔

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

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

- 分単位の時間間隔
- `0`（最大間隔の `30 days` が適用される）

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    sandbox = daytona.create(CreateSandboxFromSnapshotParams(
        snapshot="my-snapshot-name",
        auto_archive_interval=60 # 停止後 1 時間で自動アーカイブ
    ))
    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    const sandbox = await daytona.create({
        snapshot: "my-snapshot-name",
        autoArchiveInterval: 60 // 停止後 1 時間で自動アーカイブ
    });
    ```
  </TabItem>
</Tabs>

### 自動削除の間隔

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

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

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

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    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)

    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    const sandbox = await daytona.create({
        snapshot: "my-snapshot-name",
        autoDeleteInterval: 60, // 停止後 1 時間で自動削除
    });

    // 停止直後に即時削除する
    await sandbox.setAutoDeleteInterval(0)

    // 自動削除を無効化する
    await sandbox.setAutoDeleteInterval(-1)
    ```
  </TabItem>
</Tabs>

## 無期限で実行

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

<Tabs syncKey="language">
  <TabItem label="Python" icon="seti:python">
    ```python
    sandbox = daytona.create(CreateSandboxFromSnapshotParams(
        snapshot="my-snapshot-name",
        auto_stop_interval=0,  # 自動停止を無効化（デフォルトは15分）
    ))
    ```
  </TabItem>

  <TabItem label="TypeScript" icon="seti:typescript">
    ```typescript
    const sandbox = await daytona.create({
        snapshot: "my-snapshot-name",
        autoStopInterval: 0, // 自動停止を無効化（デフォルトは15分）
    });
    ```
  </TabItem>
</Tabs>
