~/VibeHandbook
無料 PDF

Cloudflare

developers.cloudflare.com

Cloudflare Containers

概要

輸送用コンテナを思い浮かべてください。アプリ全体と、それが必要とするすべてが一つの密閉された箱に詰め込まれ、どこでも同じように動きます。Cloudflare Containers を使うと、完全な Linux コンテナ — まさにその密閉された箱 — を Cloudflare のネットワーク内部、Workers のすぐ隣で実行できます。Worker が単独ではできないこと — より重いランタイム、特定のプログラムファイル、Workers のサンドボックスに収まらない言語やライブラリ — を必要とするとき、その作業をユーザーの近くで起動するコンテナに引き渡せます。コンテナを定義すると、Worker がインスタンスの起動、停止、スケールのタイミングを制御します。

強み

  • 実際のコンテナイメージを実行するため、Workers のサンドボックスでは動かないツールやランタイムを使えます。
  • Cloudflare のグローバルネットワーク上で Workers の隣に存在するため、両者間の往復が短くて済みます。
  • Worker がコンテナをオーケストレーションするため、すでに持っているルーティング、認証、エッジロジックを維持できます。
  • バッチジョブ、メディア処理、ヘッドレスブラウザ、既存の Docker ベースのコードの移植に適しています。
  • 需要に応じてスケールし、また縮小するため、アイドル状態のサーバーに四六時中支払う必要がありません。

トレードオフ

  • 素の Worker より重く、起動が遅い — コールドスタート(cold start。リクエストが届いたのに何も動いていないときの、立ち上がりの遅れ)は現実に存在するため、あらゆるリクエスト向けではありません。
  • 可動部品が増えます。スクリプトだけでなく、イメージ、そのビルド、そしてライフサイクルを管理することになります。
  • 同じ単純なタスクに対しては純粋な Worker よりコストがかかります。本当にコンテナが必要なときだけ使いましょう。
  • Workers よりまだ新しいため、ツールや制限は進化し続けると考えておきましょう。

使うべきとき

ジョブが本当にフルの OS(オペレーティングシステム)や、エッジでは提供できないランタイムを必要とするとき — 既存の (コマンドラインインターフェース)ツール(コマンドを打ち込んで操作するプログラム)の実行、Workers が対応していない言語、計算負荷の高いステップ — に、エッジネイティブな入り口を Worker に保ちつつコンテナを使いましょう。

バイブコーディングとの相性

これは AI 支援のきれいな対象です。形が馴染みあるものだからです。Dockerfile(コンテナをビルドするレシピ)に加え、それを起動する小さな Worker。汎用的なクラウド (仮想マシン。クラウド上で借りるコンピューター)を想定するのではなく、Worker からコンテナへのバインディングを正しく配線できるよう、Cloudflare Containers を使っていることをエージェントに伝えましょう。

// wrangler.jsonc — bind a container to a Worker
{
  "name": "my-app",
  "main": "src/index.ts",
  "containers": [
    { "class_name": "MyContainer", "image": "./Dockerfile" }
  ]
}