have stuff that normally goes into a Linux distribution (kernel, man pages, a bunch of other packages that don't make sense for containers) • Based on apk (the Alpine package manager) • Primarily GLIB-C (but MUSL is on the roadmap) • Packages defined as YAML and built with melange
building toolkit behind Wolfi / Chainguard Images • Build pipelines are defined in YAML files • Multi-architecture by default (via QUEMU) • Platform-agnostic builds via Docker + apko image
• Part of the building toolkit behind Wolfi / Chainguard Images • Images are defined in YAML files • Builds are fully reproducible • Automatically generates SBOMs for every image • Platform-agnostic builds via Docker + apko image
methodology to handle package management • Package installation or removal is done as a side effect of modifying the system state • This creates the ideal conditions for reproducible and declarative pipelines
Alpine apks found at pkgs.alpinelinux.org/packages • For Wolfi-based images, use Wolfi apks that are listed in the wolfi-os repository, hosted at packages.wolfi.dev/os • Don't mix! • You can also create your own apks with melange
absolutely necessary to build or execute your application • Popular base images are full of software that only makes sense on bare-metal • No need for package managers or interactive shells on production images • Less dependencies = smaller attack surface, less CVEs
Started with apko tutorial on Chainguard Academy • apko on GitHub • Troubleshooting apko builds • Chainguard Images documentation • Wolfi documentation