Cloudflare Containers
Đây là gì
Hãy nghĩ đến một vận chuyển hàng hóa: toàn bộ ứng dụng của bạn và mọi thứ nó cần được đóng gói vào một chiếc hộp kín, chạy giống hệt nhau ở bất kỳ đâu. Cloudflare Containers cho phép bạn chạy một container Linux đầy đủ — chiếc hộp kín đó — ngay bên trong mạng lưới của Cloudflare, cạnh các Worker của bạn. Khi một Worker cần thứ gì đó mà tự nó không làm được — một runtime (môi trường thực thi) nặng hơn, một tệp chương trình cụ thể, một ngôn ngữ hoặc thư viện không phù hợp với sandbox (môi trường cô lập, giới hạn) của Workers — nó có thể giao việc cho một container khởi động ngay gần người dùng của bạn. Bạn định nghĩa container, và một Worker sẽ điều khiển khi nào các bản sao khởi động, dừng lại, và mở rộng quy mô.
Điểm mạnh
- Chạy các image container thật, nên bạn có thể dùng các công cụ và runtime không hoạt động được trong sandbox của Workers.
- Nằm ngay cạnh Workers trên mạng lưới toàn cầu của Cloudflare, nên độ trễ giữa hai bên rất ngắn.
- Một Worker điều phối các container, nên bạn vẫn giữ được phần định tuyến (routing), xác thực (auth), và logic biên () mà bạn đã có sẵn.
- Phù hợp cho các tác vụ hàng loạt (batch job), xử lý media, trình duyệt không giao diện (headless browser), và chuyển đổi (port) mã nguồn đang dùng Docker sẵn có.
- Mở rộng quy mô theo nhu cầu và thu nhỏ lại khi không cần, nên bạn không phải trả tiền cho các máy chủ nhàn rỗi suốt ngày đêm.
Đánh đổi
- Nặng hơn và khởi động chậm hơn so với một Worker thuần túy — cold start (độ trễ khởi động khi có yêu cầu đến nhưng chưa có gì đang chạy) là có thật, nên nó không phù hợp cho mọi yêu cầu.
- Nhiều bộ phận chuyển động hơn: giờ đây bạn phải quản lý một image, quá trình build của nó, và vòng đời của nó, chứ không chỉ là một đoạn script.
- Tốn kém hơn một Worker thuần túy cho cùng một tác vụ đơn giản; chỉ nên dùng khi bạn thực sự cần một container.
- Vẫn còn mới hơn Workers, nên hãy chờ đợi các công cụ và giới hạn tiếp tục thay đổi.
Khi nào nên dùng
Hãy dùng container khi một tác vụ thực sự cần một hệ điều hành (operating system) đầy đủ hoặc một runtime mà edge (biên mạng) không thể cung cấp — chạy một công cụ dòng lệnh () có sẵn (một chương trình bạn điều khiển bằng cách gõ lệnh), một ngôn ngữ mà Workers không hỗ trợ, hoặc một bước tính toán nặng — trong khi vẫn giữ cửa ngõ edge-native (biên bản địa) của bạn nằm trong một Worker.
Phù hợp với vibe coding
Đây là mục tiêu rõ ràng để nhờ AI hỗ trợ vì hình dạng của nó rất quen thuộc: một Dockerfile (công thức để build container) cộng với một Worker nhỏ khởi chạy nó. Hãy nói cho (tác nhân AI) biết bạn đang dùng Cloudflare Containers để nó nối dây (wire) binding (liên kết) từ Worker đến container một cách chính xác, thay vì mặc định coi đó là một đám mây (virtual machine — máy tính ảo — một máy tính thuê trên nền tảng đám mây) thông thường.
// wrangler.jsonc — bind a container to a Worker
{
"name": "my-app",
"main": "src/index.ts",
"containers": [
{ "class_name": "MyContainer", "image": "./Dockerfile" }
]
}