BuildKit in depth: Docker's build engine explained

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • A cool thing about Buildkits LLB is that you can write your own front end to BuildKit. At Earthly, this is sort of a starter task for everyone who joins the team.

    My frontend was based on intercal and I don't recommend anyone use it[1].

    Buildkit functions a bit like a compiler. I wrote an article once about how it all works. [2]

    [1]: https://github.com/adamgordonbell/compiling-containers/tree/...

    [2]: https://www.docker.com/blog/compiling-containers-dockerfiles...

  • gitlab

  • and its "oh, you want multi-arch, do you?" friend. While prosecuting this <https://gitlab.com/gitlab-org/gitlab/-/issues/339567> I learned that https://hub.docker.com/layers/multiarch/qemu-user-static/7.2... actually mutates the binfmt_misc in buildx's context in order to exec the static copy of qemu in it https://github.com/multiarch/qemu-user-static/blob/v7.2.0-1/...

    and, that the buildx plugin itself has some qemu magick in it, which got addressed in a minor version bump but I couldn't track down the relevant GitHub issue this second (I've flushed it from my mind, only recalling that there were a lot of actors in that tire fire)

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • qemu-user-static

    :earth_africa: `/usr/bin/qemu-*-static`

  • and its "oh, you want multi-arch, do you?" friend. While prosecuting this <https://gitlab.com/gitlab-org/gitlab/-/issues/339567> I learned that https://hub.docker.com/layers/multiarch/qemu-user-static/7.2... actually mutates the binfmt_misc in buildx's context in order to exec the static copy of qemu in it https://github.com/multiarch/qemu-user-static/blob/v7.2.0-1/...

    and, that the buildx plugin itself has some qemu magick in it, which got addressed in a minor version bump but I couldn't track down the relevant GitHub issue this second (I've flushed it from my mind, only recalling that there were a lot of actors in that tire fire)

  • buildx

    Docker CLI plugin for extended build capabilities with BuildKit

  • This is great! I’ve been waiting a long time for this and it seems like more debug features are in the pipeline too: https://github.com/docker/buildx/issues/1104

    Docs: https://docs.docker.com/engine/reference/commandline/buildx_...

  • buildg

    Interactive debugger for Dockerfile, with support for IDEs (VS Code, Emacs, Neovim, etc.)

  • https://github.com/ktock/buildg

  • dagger

    Application Delivery as Code that Runs Anywhere (by dagger)

  • Dagger (https://dagger.io) is a great way to use BuildKit through language SDKs. It's such a better paradigm, I cannot imagine going back.

    Dagger is by the same folks that brought us Docker. This is their fresh take on solving the problem of container building and much more. BuildKit can more than build images and Dagger unlocks it for you.

  • daggerverse

    Dagger module to use depot in build pipelines

  • Dagger is quite cool, and we've been doing some collaboration with their new Zenith stuff. We actually have a module where you can route an image build in your Dagger pipeline to Depot and do interesting things with the result as we stage your image in an ephemeral registry [0].

    [0] https://github.com/depot/daggerverse/tree/main/depot

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • runc-examples

    runc configuration examples

  • EDIT: Looks like I don't need to `unshare` by hand but runc actually does this already:

    https://github.com/psanford/runc-examples/blob/master/rootle...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts