Containersとは?Workersを超える実行環境

《 Cloudflare完全ガイド 目次へ 》

第5章もこのページで最後です。ここまで見てきたWorkersは、軽く速く動く代わりに、できることが絞られていました。JavaScriptを中心とした実行環境で、メモリは128MB、ファイルシステムは自由に使えません。この枠に収まらない処理は、これまでCloudflareの外側にサーバーを用意するしかありませんでした。

Cloudflare Containersは、その最後の壁を取り払う仕組みです。任意の言語で書いたプログラムや、既存のソフトウェアをそのままコンテナとしてCloudflareのネットワーク上で動かし、Workersから呼び出せます。

このページで分かること

  • コンテナとは何か、Workersと何が違うのか
  • Cloudflare Containersの仕組みと、Workersとの役割分担
  • どんな処理に向いているのか(具体例)
  • インスタンスの種類と料金の考え方
  • 導入前に知っておくべき制約

コンテナとは

コンテナ(Container)は、アプリケーションと、それが動くのに必要な一式(ライブラリ、設定、OSの一部)をひとつの箱にまとめたものです。この箱ごと別の場所へ持っていけば、どこでも同じように動きます。

「手元では動いたのに本番では動かない」という問題を、環境ごと持ち運ぶことで解決する技術で、Dockerという道具が広く使われています。作り方の指示書がDockerfile、その指示書から作られた箱がコンテナイメージです。

Workersが「Cloudflareが用意した実行環境に、自分のコードだけを預ける」方式なのに対し、コンテナは「実行環境そのものを自分で用意して持ち込む」方式だと考えてください。自由度は高い一方、箱が大きいぶん起動には時間が掛かります。

Cloudflare Containersの仕組み

Cloudflare Containersでは、コンテナが単独で公開されるわけではありません。必ずWorkerが前に立ち、Workerのコードからコンテナを呼び出します

WorkersとContainersの役割分担
図1:WorkersとContainersの役割分担

流れは次のとおりです。

  1. 利用者のリクエストは、まずWorkerが受け取る
  2. Workerが判断し、重い処理はコンテナへ渡す
  3. コンテナが起動していなければ、その場で起動される
  4. 処理の結果をWorkerが受け取り、利用者へ返す

コンテナのインスタンスは、前ページで扱ったDurable Objectsの仕組みを土台に管理されます。名前を指定して特定のインスタンスを呼び出せる点も同じで、「利用者ごとに専用のコンテナを立てる」といった構成が自然に書けます。

使われなくなったインスタンスは自動的に停止します。停止までの時間は sleepAfter で指定でき、既定は10分です。次のリクエストが来れば再び起動しますが、起動には1〜3秒程度かかります(イメージの大きさによります)。常時起動しているサーバーとは、この点が大きく異なります。

開発の流れはWorkersと同じで、設定ファイルにDockerfileの場所とインスタンスの種類を書き、wrangler deploy を実行します。イメージのビルドとアップロード、各拠点への配置はCloudflare側が引き受けます。

何に向いているのか

Workersでは無理があり、コンテナが適している処理の例です。

  • 動画・音声の変換:ffmpegのような既存のツールをそのまま動かす
  • 画像の高度な処理:大きなメモリを使う変換や解析
  • 他の言語で書かれたプログラム:Go、Java、Ruby、PHP、Pythonの重いライブラリなど
  • 既存のソフトウェアの流用:すでにDockerイメージとして配布されているツールを組み込む
  • ファイルを扱う処理:一時的にディスクへ書き出しながら進める作業
  • 時間の掛かる計算:CPUを長く使う処理や、複数コアを並行して使う処理

一方、次のような処理はWorkersのままで十分です。無理にコンテナを使う必要はありません。

  • APIの中継、認証、リクエストの書き換え
  • HTMLの生成、静的アセットの配信
  • KVD1への読み書きが中心の処理

判断の目安は、「Workersの制限(メモリ128MB、Web標準API中心、ファイルシステムなし)に当たるかどうか」です。当たらないなら、起動が速く安価なWorkersのほうが有利です。

Workers Containers
起動 ほぼ瞬時 1〜3秒程度
言語 JavaScript / TypeScript / Python / Rust ほか 任意(イメージに含めたもの)
メモリ 128MB 256MiB〜12GiB
ファイルシステム 実質なし あり(一時的)
料金 無料プランあり Workers有料プランが必要
向く処理 軽く速い処理を大量に 重い処理を必要なときだけ

料金

Containersの利用にはWorkers有料プラン(月5ドル)が必要で、無料プランには利用枠がありません(2026年8月時点)。

インスタンスは、割り当てられる資源によって次の種類から選びます。

種類 vCPU メモリ ディスク
lite 1/16 256 MiB 2 GB
basic 1/4 1 GiB 4 GB
standard-1 1/2 4 GiB 8 GB
standard-2 1 6 GiB 12 GB
standard-3 2 8 GiB 16 GB
standard-4 4 12 GiB 20 GB

課金は、コンテナが起動していた時間に対する従量制です。メモリ・CPU・ディスクをそれぞれ秒単位で計算します。有料プランには毎月一定量が含まれており、その範囲であれば追加費用は掛かりません。

  • メモリ:25 GiB時間/月まで込み、超過分は1 GiB秒あたり0.0000025ドル
  • CPU:375 vCPU分/月まで込み、超過分は1 vCPU秒あたり0.000020ドル
  • ディスク:200 GB時間/月まで込み、超過分は1 GB秒あたり0.00000007ドル

Workersと違い、外部への転送量(エグレス)には課金があります(地域により1GBあたり0.025〜0.05ドル、月500GB〜1TBの無料枠付き)。

重要なのは、起動している時間そのものが費用になるという点です。sleepAfter を短くして使わないインスタンスを早く止めることが、そのまま費用の節約につながります。

初心者が注意するポイント

  • 無料プランでは使えません:Containersだけは、Workers有料プランへの加入が前提です
  • 起動の遅さを前提に設計する:1〜3秒のコールドスタートが許されない画面では、Workersだけで応答を返し、コンテナの処理は非同期(前ページのQueuesやWorkflows)に回す構成が向きます
  • ディスクは永続的な保存先ではありません:コンテナ内のディスクはインスタンスが止まれば失われます。残したいデータはR2D1へ書き出してください(第6章)
  • まずWorkersで足りないか確認する:コンテナは自由度と引き換えに、起動時間・費用・運用の手間が増えます。Workersの制限に当たっていない段階で選ぶ理由はありません
  • イメージは小さく保つ:イメージが大きいほど起動が遅くなります。不要なライブラリを含めない、軽量なベースイメージを使う、といった工夫が効きます

関連サービス

  • Workers:コンテナを呼び出す側。必ず前段に立つ(第5章)
  • Durable Objects:コンテナインスタンスの管理を支える仕組み(前々ページ)
  • Queues / Workflows:起動に時間の掛かる処理を非同期で回す(前ページ)
  • R2:コンテナが処理した結果の保存先(第6章)
  • Workers AI:AIモデルの実行を目的とする場合は、まずこちらを検討する(第7章)

まとめ

  • コンテナは、アプリケーションと実行環境をひとまとめにして持ち運べるようにした箱
  • Cloudflare Containersは、そのコンテナをCloudflareのネットワーク上で動かし、Workersから呼び出せるようにする仕組み
  • 必ずWorkerが前に立ち、重い処理だけをコンテナへ渡す構成になる
  • 任意の言語・既存のソフトウェアを動かせるが、起動には1〜3秒かかり、使わなければ自動停止する
  • 利用にはWorkers有料プランが必要で、起動していた時間に対する従量課金
  • Workersの制限に当たっていないなら、Workersのままが有利

これで第5章「開発プラットフォーム」は完結です。Workersを中心に、静的サイトの公開、メールの受信、状態の管理、非同期処理、そして重い処理の実行までが揃いました。次の第6章では、これらのプログラムが扱うデータの置き場所――ストレージとデータベースを見ていきます。最初に扱うのは、エグレス(データ転送)が無料という特徴を持つオブジェクトストレージ、R2です。

次に読む

→ ガイドの目次に戻る

※本記事の情報は 2026年8月時点のものです。

タイトルとURLをコピーしました