透過 CLI 管理

Deno CLI 內建了用於管理 Deno Sandbox 實例的指令,讓您可以直接在終端機中建立、控制與操作這些實例。

這項整合讓 Deno Sandbox 管理能自然地融入您既有的 Deno 工作流程。

建立您的第一個沙箱

開始使用最簡單的方式是執行 deno sandbox create。預設情況下,這會建立一個互動式、以 session 為基礎的沙箱,並在準備完成後自動開啟 SSH 連線:

deno sandbox create

如果您的系統無法使用 SSH,則會改為顯示連線資訊。當您離開該 session 時,沙箱會自行清理。

在開發工作中,您通常會想把專案檔案複製進沙箱。--copy 選項會將檔案上傳到沙箱內的 /app 目錄:

deno sandbox create --copy ./my-project

您也可以在建立時複製多個目錄:

deno sandbox create --copy ./src --copy ./config

如果您需要讓沙箱運行超過單一 session,可透過 --timeout 指定逾時時間:

deno sandbox create --timeout 2m

您也可以建立自訂記憶體限制的沙箱:

deno sandbox create --memory 2gib

若要為 Web 應用程式公開 HTTP 連接埠:

deno sandbox create --expose-http 3000

您可以使用 --volume 旗標將持久性磁碟區掛載到沙箱:

deno sandbox create --volume my-volume:/data

若要建立沙箱並立即執行命令:

deno sandbox create ls /

這對建置與測試專案特別實用。您可以在同一個指令中複製檔案並執行建置流程:

deno sandbox create --copy ./app --cwd /app "npm i && npm start"

對於 Web 應用程式,您可以公開連接埠來存取正在執行的服務:

deno sandbox create --expose-http 3000 --copy ./web-app --cwd /app "npm i && npm run dev"

較複雜的流程也可以用加上引號的命令串接來表示:

deno sandbox create --copy ./app --cwd /app "npm install && npm test && npm run build"

檢視您的 Deno Sandbox

使用 deno sandbox list(或 deno sandbox ls)查看您組織中的所有沙箱:

$ deno sandbox list
ID                             CREATED                  REGION   STATUS    UPTIME
sbx_ord_1at5nn58e77rtd11e3k3   2026-01-30 18:33:40.79   ord      running   26.9s
sbx_ord_fwnygdsnszfe5ghafyx8   2026-01-30 18:31:40.90   ord      stopped   5.1s
sbx_ord_4xqcyahb8ye2r5a643de   2026-01-30 18:29:59.10   ord      stopped   9.4s

這會顯示每個沙箱的 ID、建立時間、區域、狀態與運行時間。

遠端執行命令

deno sandbox exec 指令讓您可以在任何運行中的沙箱內執行單一命令,而不需要開啟互動式 session。這非常適合自動化、CI/CD 流程或快速的一次性工作:

deno sandbox exec sbx_ord_abc123def456 ls -la

大多數情況下,您會在 /app 目錄中工作(也就是複製檔案所在的位置)。使用 --cwd 設定工作目錄:

deno sandbox exec sbx_ord_abc123def456 --cwd /app npm install

若用於腳本或自動化,可使用 --quiet 抑制命令輸出:

deno sandbox exec sbx_ord_abc123def456 --quiet --cwd /app npm test

您也可以將整段命令加上引號來執行複雜的命令串接:

deno sandbox exec sbx_ord_abc123def456 --cwd /app "npm install && npm test"

exec 指令能自然地與 Unix pipe 與標準輸入/輸出搭配使用。您可以把沙箱命令輸出 pipe 到本機工具:

deno sandbox exec sbx_ord_abc123def456 'ls -lh /' | wc -l

也可以把本機資料 pipe 到沙箱程序中處理:

cat large-dataset.csv | deno sandbox exec sbx_ord_abc123def456 --cwd /app "deno run -A main.ts"

這讓沙箱處理流程能輕鬆整合到更大的 Unix 工作流程與資料管線中。

傳輸檔案

雖然您可以在建立 Deno Sandbox 時複製檔案,但之後可能仍需更新或取回檔案。deno sandbox copy 指令(也可寫成 deno sandbox cp)支援雙向傳輸:從本機到 Deno Sandbox、從 Deno Sandbox 回到本機,甚至在不同沙箱之間複製。

將檔案從本機複製到沙箱:

deno sandbox copy ./app.js sbx_ord_abc123def456:/app/

從沙箱取回檔案到本機:

deno sandbox copy sbx_ord_abc123def456:/app/results.json ./output/

在不同沙箱之間複製檔案:

deno sandbox copy sbx_ord_abc123def456:/app/data.csv sbx_ord_xyz789uvw012:/app/input/

您可以使用 glob 模式從 Deno Sandbox 複製多個檔案:

deno sandbox copy sbx_ord_abc123def456:/app/*.json ./config/
deno sandbox copy sbx_ord_abc123def456:/app/logs/*.log ./logs/

您也可以一次複製多個檔案與目錄:

deno sandbox copy ./src/ ./package.json sbx_ord_abc123def456:/app/

您也可以自訂目標路徑,以便整理沙箱內的檔案:

deno sandbox copy ./frontend sbx_ord_abc123def456:/app/web/

部署沙箱

您可以使用 deno sandbox deploy 指令,將正在運行的沙箱部署為 Deno Deploy 應用程式:

deno sandbox deploy sbx_ord_abc123def456 my-app

預設會部署到預覽部署(preview deployment)。若要直接部署到正式環境:

deno sandbox deploy --prod sbx_ord_abc123def456 my-app

您可以指定自訂工作目錄與進入點:

deno sandbox deploy --cwd /app --entrypoint main.ts sbx_ord_abc123def456 my-app

若要將參數傳給進入點腳本:

deno sandbox deploy --args --port 8080 sbx_ord_abc123def456 my-app

管理磁碟區

沙箱系統支援持久性磁碟區,可用於需要跨沙箱實例保留的資料。使用 deno sandbox volumes 指令管理磁碟區。

建立磁碟區

建立具有指定名稱、容量與區域的新磁碟區:

deno sandbox volumes create my-volume --capacity 10gb --region ord

列出磁碟區

列出您組織中的所有磁碟區:

deno sandbox volumes list

您也可以搜尋特定磁碟區:

deno sandbox volumes list my-volume

刪除磁碟區

在不再需要某個磁碟區時將其刪除:

deno sandbox volumes delete my-volume

管理快照

快照是由磁碟區建立的唯讀映像。您可以先安裝好軟體一次,之後用快照立即啟動已準備完成的新沙箱。完整流程請參考磁碟區與快照

建立快照

從現有磁碟區建立快照:

deno sandbox snapshots create my-volume my-snapshot

列出快照

列出您組織中的所有快照:

$ deno sandbox snapshots list
ID                             SLUG          REGION   ALLOCATED    BOOTABLE
snp_ord_spmbe47dysccpy277ma6   my-snapshot   ord      217.05 MiB   TRUE

刪除快照

在不再需要快照時將其刪除:

deno sandbox snapshots delete my-snapshot

切換組織

deno sandbox switch 指令可讓您在設定中的不同組織之間切換:

deno sandbox switch

這在需要同時操作多個組織時很實用。

互動式存取

當您需要在沙箱內進行互動式操作時,例如編輯檔案、除錯問題或探索環境,可以使用 deno sandbox ssh

deno sandbox ssh sbx_ord_abc123def456

這會提供您一個沙箱內的完整 Linux shell,您可以使用任何命令列工具、用 vim 或 nano 編輯檔案、監看程序,或視需要安裝額外軟體。即使您中斷連線,沙箱仍會持續運行,因此您稍後可以重新連線,或改用其他指令進行遠端操作。

管理沙箱逾時

延長沙箱運行時間

有時您會需要更多時間在運行中的沙箱完成工作。deno sandbox extend 指令可讓您延長任何運行中沙箱的逾時時間,而不會中斷正在執行的程序:

deno sandbox extend sbx_ord_abc123def456 30m

extend 指令可與各種沙箱狀態無縫配合,不論您是否正透過 SSH 連入、執行遠端命令,或有背景程序正在運作。沙箱的到期時間會更新,而所有連線與程序都不會中斷。

清理與終止

完成使用後,請用 deno sandbox kill(或 deno sandbox rm)終止沙箱並釋放資源:

deno sandbox kill sbx_ord_abc123def456

這會立即停止沙箱中的所有程序並釋放資源。請務必先保存重要工作,因為沙箱內的所有資料都會遺失。

常見工作流程

開發與測試

典型的開發流程通常是:建立含有程式碼的沙箱、安裝相依套件,然後執行測試:

deno sandbox create --copy ./my-app

建立完成後,使用回傳的沙箱 ID 來安裝與測試您的專案:

deno sandbox exec sbx_ord_abc123def456 --cwd /app npm install
deno sandbox exec sbx_ord_abc123def456 --cwd /app npm test

當您在本機做了修改後,可以更新沙箱內容,並在完成後取回產生的檔案:

deno sandbox copy ./src/ sbx_ord_abc123def456:/app/src/
deno sandbox copy sbx_ord_abc123def456:/app/build/ ./dist/
deno sandbox kill sbx_ord_abc123def456

資料處理

在需要取回結果的資料處理流程中,可以結合遠端執行與 SSH 存取:

SANDBOX_ID=$(deno sandbox create --timeout 20m --copy ./data)
deno sandbox exec $SANDBOX_ID --cwd /app "deno run -A main.ts"

您也可以透過 pipe 將資料直接串流到沙箱程序,這對大型資料集或即時處理特別實用:

SANDBOX_ID=$(deno sandbox create --timeout 20m --copy ./processing-scripts)
curl -s https://api.example.com/data.json | deno sandbox exec $SANDBOX_ID --cwd /app jq '.items[] | select(.active)'

也可以把本機與遠端處理串成同一條資料管線:

grep "ERROR" /var/log/app.log | deno sandbox exec $SANDBOX_ID --cwd /app "deno run -A main.ts" | sort | uniq -c

完成後,將產生的檔案複製回本機,再清理沙箱:

deno sandbox copy $SANDBOX_ID:/app/results/*.csv ./output/
deno sandbox kill $SANDBOX_ID