BuildKit: Docker's Hidden Gem That Can Build Almost Anything

Fans say “magic,” skeptics say “pain” — and someone blamed AI art

TLDR: BuildKit, the engine behind Docker builds, can output more than images—like folders and packages—thanks to a flexible, plug‑in design. Commenters split between praising its power and blasting its pain at scale, with extra spice over “AI-looking” diagrams and a double-post callout—useful tech, messy vibes.

Docker’s hidden engine, BuildKit, isn’t just making app containers — it can spit out folders, tar files, and even packages, all from a flexible, plug‑in build system. That’s the pitch. But the comment section? It became a full‑blown reality show. One user opened with a vibe check, calling out the post’s crooked diagram as “AI‑generated and misaligned”, branding it an “instant AI tell.” Tech talk derailed by ASCII art? Peak 2026.

Then the generational battle kicked off. A traditionalist declared “Make” (an old-school build tool) the real MVP, calling Docker’s file format a failed remake and accusing the company of caring more about enterprise sales than developers. Meanwhile, a pragmatic fan chimed in: BuildKit’s secret power is swapping the input language — someone even pointed to a YAML-based Dockerfile in the wild, proving you don’t have to use the usual syntax. Translation: it’s a build machine that can read whatever recipe you feed it.

But there’s drama behind the magic. Another commenter warned BuildKit is “very cool, but painful at scale,” dropping gotchas like tiny config differences breaking caching (the speed trick that reuses work). And for dessert, a user cried double post. Verdict: BuildKit wowed many, but the crowd split between “this changes everything” and “it’s clever, but ouch.”

Key Points

  • BuildKit is a pluggable, general-purpose build framework that powers docker build but supports far more than Dockerfiles.
  • LLB is BuildKit’s protobuf-based IR describing a DAG of filesystem operations, enabling content-addressable caching and reproducibility.
  • Frontends are container images that convert various spec formats (e.g., YAML, JSON, HCL, TOML) into LLB via the BuildKit Gateway API; the Dockerfile is just one frontend.
  • The solver executes the LLB graph with operation-level caching and parallelism; caches can be local, inline in images, or remote registries.
  • BuildKit’s --output flag supports outputs like images, local directories, tarballs, and OCI tarballs; projects such as Earthly, Dagger, and Depot build on LLB, and a custom frontend "apkbuild" generates Alpine APK packages.

Hottest takes

“fix your AI generated ascii artwork … instant AI tell” — whalesalad
“Dockerfile was a failed iteration of Makefile” — moochmooch
“BuildKit is very cool tech, but painful to run at volume” — verdverm
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.