<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chainguard Containers on</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/tags/chainguard-containers/</link><description>Recent content in Chainguard Containers on</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Copyright (c) 2023 Chainguard</copyright><lastBuildDate>Thu, 04 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/tags/chainguard-containers/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview of Chainguard's Package Repositories</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/packages/package-model/</link><pubDate>Thu, 09 Oct 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/packages/package-model/</guid><description>&lt;p&gt;Chainguard Containers are built using packages from the Wolfi and Chainguard OS Linux distributions. If you need to extend or customize an image, it can be useful to access these packages directly.&lt;/p&gt;
&lt;p&gt;Chainguard offers curated package repositories to support containerized workloads and simplify dependency management. These repositories ensure you can access trusted packages — whether building custom container images, working with Chainguard OS, or using Chainguard Containers in production.&lt;/p&gt;
&lt;p&gt;This article provides an overview of Chainguard&amp;rsquo;s package model, highlighting the different Chainguard package repositories available to customers.&lt;/p&gt;</description></item><item><title>Build Java Containers with Jib</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/tooling/building-java-containers-with-jib/</link><pubDate>Tue, 23 Sep 2025 00:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/tooling/building-java-containers-with-jib/</guid><description>&lt;p&gt;&lt;a href="https://github.com/GoogleContainerTools/jib"&gt;Google&amp;rsquo;s Jib&lt;/a&gt; is a container
image build tool designed specifically for Java applications. Unlike other
approaches, Jib does not depend on Docker or require users to write
Dockerfiles. Instead, Jib integrates directly with the Maven and Gradle build
systems to create container images for Java applications. When paired with
&lt;a href="https://images.chainguard.dev/directory/image/jre/versions"&gt;Chainguard Java
Containers&lt;/a&gt;, these tools provide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;improved security through minimal base images,&lt;/li&gt;
&lt;li&gt;faster builds through layer optimization,&lt;/li&gt;
&lt;li&gt;and simplified CI/CD integration without Docker daemon requirements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This tutorial will walk you through building a demo application with Maven,
Jib, and Chainguard Containers.&lt;/p&gt;</description></item><item><title>Build Go Containers with Ko</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/tooling/building-go-containers-with-ko/</link><pubDate>Thu, 11 Sep 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/tooling/building-go-containers-with-ko/</guid><description>&lt;p&gt;&lt;a href="https://ko.build/"&gt;Ko&lt;/a&gt; is a tool for building Go applications into container images without using Dockerfiles. When combined with Chainguard&amp;rsquo;s minimal containers, Ko creates smaller and more secure container runtimes with only your application and its essential dependencies.&lt;/p&gt;
&lt;p&gt;This tutorial will guide you through installing Ko and using it to containerize Go applications with Chainguard Containers. By the end of this tutorial, you&amp;rsquo;ll understand how to build, configure, and deploy secure, custom containers with your Go-based application using Ko&amp;rsquo;s streamlined workflow.&lt;/p&gt;</description></item><item><title>Overview of Chainguard Custom Assembly</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/</link><pubDate>Wed, 19 Feb 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/</guid><description>&lt;p&gt;Chainguard Custom Assembly enables organizations to build container images
tailored to their internal requirements and application dependencies, without
sacrificing security. By extending Chainguard&amp;rsquo;s hardened base images with
additional packages, environment variables, user accounts, and certificates,
teams can reduce CVE exposure while maintaining the flexibility their workflows
demand.&lt;/p&gt;
&lt;p&gt;This overview of Custom Assembly outlines how it works, its limitations, and how you can use container images customized with Custom Assembly. For a more hands-on tutorial on using Custom Assembly, Chainguard Academy currently has documentation for the following methods of managing the tool:&lt;/p&gt;</description></item><item><title>Custom Assembly FAQs</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/faq/</link><pubDate>Wed, 19 Feb 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/faq/</guid><description>&lt;h2 id="what-is-chainguards-custom-assembly" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;What is Chainguard’s Custom Assembly?&lt;/span&gt;
&lt;a href="#what-is-chainguards-custom-assembly" class="anchor" aria-label="Link to What is Chainguard’s Custom Assembly?" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Custom Assembly is a tool from Chainguard that allows users to build customized container images by assembling packages from a curated, secure set of base images provided by Chainguard.&lt;/p&gt;</description></item><item><title>Getting Started with the C/C++ Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/c/</link><pubDate>Tue, 30 Jul 2024 15:54:33 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/c/</guid><description>&lt;p&gt;Chainguard provides security-hardened container images for C and C++ development, offering minimal runtime environments with significantly reduced vulnerabilities compared to traditional base images. Built on Chainguard&amp;rsquo;s own OS, these containers enable more secure deployment of compiled programs through purpose-built images for different linking scenarios. This guide demonstrates three approaches to compiling and running C/C++ applications using Chainguard&amp;rsquo;s specialized containers.&lt;/p&gt;
&lt;p&gt;The container image with which you choose to run your compiled program depends on the nature of your binaries. Static binaries can be executed in the minimal &lt;code&gt;static&lt;/code&gt; Chainguard Container, while dynamically linked binaries can be run in the &lt;code&gt;glibc-dynamic&lt;/code&gt; Container. For this demonstration, you will first compile a C binary using the &lt;code&gt;gcc-glibc&lt;/code&gt; Chainguard Container, and then learn how to use a multi-stage build to run the resulting binary in the &lt;code&gt;glibc-dynamic&lt;/code&gt; image. You&amp;rsquo;ll also cover an example showing the multi-stage build process for the C++ programming language. To learn more about the differences between these container images, read our article on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-compiled-programs/compiled-programs/"&gt;Choosing an Container for your Compiled Programs&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Chainguard End-of-Life Grace Period for Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/eol-gp-overview/</link><pubDate>Wed, 14 May 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/eol-gp-overview/</guid><description>&lt;p&gt;Typically, specific versions of software receive updates on a schedule for a set amount of time. Eventually, though, every version of software will stop receiving support. When project maintainers stop providing updates, it&amp;rsquo;s known as the &lt;em&gt;End-of-Life&lt;/em&gt; (EOL) stage.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s recommended that when a software version reaches the EOL phase, users should migrate their projects to a later version, as &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/how-eol-software-accumulates-cves/"&gt;EOL software is known to accumulate vulnerabilities&lt;/a&gt;. However, there are cases where an organization may want to continue using a container image after it has reached end-of-life. This could be because an image reaches EOL before the organization&amp;rsquo;s release schedule, or perhaps later image versions have one or more issues that prevent the organization from upgrading.&lt;/p&gt;</description></item><item><title>Chainguard Criteria for Determining Whether to Build a Container Image</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/what-chainguard-will-build/</link><pubDate>Mon, 13 Jan 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/what-chainguard-will-build/</guid><description>&lt;p&gt;There are currently over &lt;a href="https://images.chainguard.dev/?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;2,000 Chainguard Containers&lt;/a&gt; and that number is always growing as we add more to our expanding catalog.&lt;/p&gt;
&lt;p&gt;If you would like a Chainguard Container that is not yet available, or inquire about whether we would build a given container image, Chainguard will endeavor to perform an analysis on the request. Chainguard aims to build new container images that are relevant to our customers and to support broader software security goals. However, it is not always feasible to package and build software. Please note that we have the following general criteria when considering requests.&lt;/p&gt;</description></item><item><title>Kubernetes Policy Enforcement with OPA Gatekeeper</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/enforcement/opa-gatekeeper/</link><pubDate>Tue, 02 Sep 2025 10:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/enforcement/opa-gatekeeper/</guid><description>&lt;p&gt;&lt;a href="https://open-policy-agent.github.io/gatekeeper/website/"&gt;Gatekeeper&lt;/a&gt; is an admission controller that enforces policies in Kubernetes clusters. This
article describes how it can be leveraged to ensure resources follow best practices related to the use of Chainguard Containers.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow the examples in this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Overview of The Chainguard Factory</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/</link><pubDate>Tue, 15 Jul 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/</guid><description>&lt;p&gt;Chainguard Factory is the automated build infrastructure that continuously monitors, builds, and updates thousands of open source projects to deliver containers, libraries, and VMs with a strong security posture and the latest patches. This massive automation system tackles one of the industry&amp;rsquo;s biggest challenges: keeping software dependencies current at scale while maintaining security and compatibility across the entire open source ecosystem.&lt;/p&gt;
&lt;p&gt;&lt;figure class="figure" role="img" aria-labelledby="fig-factory.png"&gt;
&lt;img class="figure-img img-fluid lazyload blur-up"
data-sizes="auto"
src="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_767b618b73106af0.png"
data-srcset="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_51abcffa95977f9a.png 900w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_bb79fd626da80e00.png 800w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_cbcbde37445c6fb7.png 700w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_d2c51c1a34d6da57.png 600w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_9ca4085f55da8b62.png 500w"
width="2514"
height="1974"
alt="Diagram of a factory"
loading="lazy"
decoding="async"
itemprop="image"&gt;
&lt;noscript&gt;&lt;img class="figure-img img-fluid" sizes="100vw" srcset="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_51abcffa95977f9a.png 900w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_bb79fd626da80e00.png 800w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_cbcbde37445c6fb7.png 700w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_d2c51c1a34d6da57.png 600w,https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory_hu_9ca4085f55da8b62.png 500w" src="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/overview/factory.png" width="2514" height="1974" alt="Diagram of a factory" itemprop="image"&gt;&lt;/noscript&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Using the Chainguard Console to Manage Custom Assembly Resources</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-console/</link><pubDate>Wed, 09 Jul 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-console/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/"&gt;Custom Assembly feature&lt;/a&gt; allows you to build customized container images that include only the packages your application needs. This tutorial will walk you through using the &lt;a href="https://console.chainguard.dev"&gt;Chainguard console&amp;rsquo;s web interface&lt;/a&gt; to manage Custom Assembly resources, including selecting packages, building customized containers, and monitoring build status.&lt;/p&gt;
&lt;p&gt;By the end of this guide, you&amp;rsquo;ll be able to create, customize, and manage your own container images through the Chainguard console, giving you full control over your container dependencies while maintaining Chainguard&amp;rsquo;s security and compliance standards.&lt;/p&gt;</description></item><item><title>Chainguard Shared Responsibility Model</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/shared-responsibility-model/</link><pubDate>Thu, 17 Oct 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/shared-responsibility-model/</guid><description>&lt;p&gt;Chainguard’s mission is to be the safe source for open source. As part of this mission, Chainguard builds all of our packages and images from upstream open source code and delivers the resulting artifacts to our customers. There are three distinct parties involved here: &lt;strong&gt;Upstream&lt;/strong&gt; projects, &lt;strong&gt;Chainguard&lt;/strong&gt;, and &lt;strong&gt;Customers&lt;/strong&gt;; each of these parties share some measure of responsibility across a few dimensions.&lt;/p&gt;
&lt;center&gt;&lt;img src="csrm-1.png" alt="Diagram representing the Chainguard-based open source software supply chain" style="width:1050px;"&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;p&gt;This guide is an overview of Chainguard&amp;rsquo;s Shared Responsibility Model: a framework that outlines the security responsibilities of upstream open source software projects, Chainguard, and its customers. The dimensions of shared responsibility this guide covers are:&lt;/p&gt;</description></item><item><title>Overview of migrating to Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migrations-overview/</link><pubDate>Mon, 22 Jul 2024 12:56:52 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migrations-overview/</guid><description>&lt;p&gt;&lt;a href="https://www.chainguard.dev/chainguard-images?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;Chainguard Containers&lt;/a&gt; are a collection of container images designed for security and minimalism. Many Chainguard Containers are &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started-distroless/"&gt;distroless&lt;/a&gt;; they contain only an open-source application and its runtime dependencies. These container images do not even contain a shell or package manager, because fewer dependencies reduce the potential attack surface of images.&lt;/p&gt;
&lt;p&gt;By minimizing the number of dependencies and thus reducing their potential attack surface, Chainguard Containers inherently contain few to zero CVEs. Chainguard Containers are rebuilt nightly to ensure they are completely up-to-date and contain all available security patches. With this nightly build approach, our engineering team sometimes &lt;a href="https://www.chainguard.dev/unchained/how-chainguard-fixes-vulnerabilities?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;fixes vulnerabilities before they’re detected&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to Set Up Pull Through from Chainguard's Registry to Google Artifact Registry</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifact-registry-pull-through/</link><pubDate>Mon, 08 Jul 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifact-registry-pull-through/</guid><description>&lt;p&gt;Organizations can use Chainguard Containers along with third-party software repositories in order to integrate with current workflows as the single source of truth for software artifacts. In this situation, you can set up a proxy repository to function as a mirror of &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-registry/overview/"&gt;Chainguard&amp;rsquo;s registry&lt;/a&gt;. This mirror can then serve as a pull through cache for your Chainguard Containers.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to set up a remote repository with &lt;a href="https://cloud.google.com/artifact-registry/docs/repositories/remote-overview"&gt;Google Artifact Registry&lt;/a&gt;. It will walk you through how to set up an Artifact Registry Repository you can use as a pull through cache for Chainguard&amp;rsquo;s Free containers or Production containers originating from a private Chainguard repository.&lt;/p&gt;</description></item><item><title>Migrating to PHP Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-php/</link><pubDate>Thu, 04 Apr 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-php/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s PHP containers provide enhanced security for PHP applications through minimal, purpose-built images that significantly reduce attack surface. Built on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/wolfi/"&gt;Wolfi&lt;/a&gt;, these containers achieve &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/php/"&gt;dramatically fewer vulnerabilities&lt;/a&gt; compared to traditional PHP images while maintaining full compatibility with PHP workloads. Daily automated builds ensure applications receive the latest security patches without manual intervention.&lt;/p&gt;
&lt;p&gt;This article will assist you in the process of migrating your existing PHP Dockerfiles to leverage the benefits of Chainguard Containers, including a smaller attack surface and a more secure application footprint.&lt;/p&gt;</description></item><item><title>Alpine Compatibility</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/alpine-compatibility/</link><pubDate>Fri, 23 Feb 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/alpine-compatibility/</guid><description>&lt;p&gt;Chainguard Containers and Alpine base images have different binaries and scripts included in their respective &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt; packages.&lt;/p&gt;
&lt;p&gt;The following table lists common tools and their corresponding package(s) in both Wolfi and Alpine distributions.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;$PATH&lt;/code&gt; locations like &lt;code&gt;/usr/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; are not included here. If you have compatibility issues with tools that are included in both &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt;, be sure to check &lt;code&gt;$PATH&lt;/code&gt; order and confirm which version of a tool is being run.&lt;/p&gt;</description></item><item><title>How to Set Up Pull-through from Chainguard's Container Registry to Artifactory</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifactory/artifactory-images-pull-through/</link><pubDate>Tue, 13 Feb 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifactory/artifactory-images-pull-through/</guid><description>&lt;p&gt;Organizations can route container image pulls through Artifactory to centralize artifact management, enforce policy, and integrate Chainguard Containers into existing CI/CD workflows. You can configure Artifactory as a pull-through cache by setting up a remote repository pointed at &lt;a href="https://edu.chainguard.dev/chainguard/chainguard-registry/overview/"&gt;Chainguard&amp;rsquo;s container registry&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to set up remote repositories with &lt;a href="https://jfrog.com/artifactory/"&gt;JFrog Artifactory&lt;/a&gt;. Specifically, it goes over how to set up one repository you can use as a pull-through cache for Chainguard&amp;rsquo;s public &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-categories/#starter-containers"&gt;Free Containers&lt;/a&gt; and another you can use for &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-categories/#production-containers"&gt;Production Containers&lt;/a&gt; originating from a private Chainguard repository. It also outlines how you can use one of Artifactory&amp;rsquo;s &lt;a href="https://jfrog.com/help/r/jfrog-artifactory-documentation/virtual-repositories"&gt;virtual repositories&lt;/a&gt; as a pull-through cache to access resources from multiple remote repositories in a single location.&lt;/p&gt;</description></item><item><title>Getting Started with the Cilium Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/cilium/</link><pubDate>Thu, 14 Dec 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/cilium/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s Cilium container images provide a security-hardened foundation for Kubernetes networking with significantly reduced vulnerabilities compared to standard Cilium deployments. Cilium leverages &lt;a href="https://ebpf.io/"&gt;eBPF&lt;/a&gt; technology to transparently secure network connectivity between services, enabling powerful security policies without application changes. Built on Wolfi OS, Chainguard&amp;rsquo;s minimal Cilium images enhance your cluster&amp;rsquo;s security posture while maintaining full compatibility with Cilium&amp;rsquo;s advanced networking features.&lt;/p&gt;
&lt;p&gt;We will demonstrate how to get started with the Chainguard Cilium container images on an example K3s cluster. To get started, you&amp;rsquo;ll need Docker, &lt;code&gt;k3d&lt;/code&gt; (a CLI tool to install &lt;code&gt;k3s&lt;/code&gt;), &lt;code&gt;kubectl&lt;/code&gt;, and the &lt;code&gt;cilium&lt;/code&gt; CLI installed.&lt;/p&gt;</description></item><item><title>Strategies for Minimizing your CVE Risk</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/cve-risk/</link><pubDate>Thu, 16 Nov 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/cve-risk/</guid><description>&lt;p&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/cves/cve-intro/#what-is-a-cve"&gt;Common vulnerabilities and exposures&lt;/a&gt; (CVEs) are an increasing concern for developers and organizations, which is why Chainguard developed its minimal container images that reduce the attack surface. A new CVE in a widely-used application or a vulnerability scan with numerous positive results can significantly impact security posture, compliance requirements, and development timelines.&lt;/p&gt;
&lt;p&gt;Chances are, your software has already been impacted by a CVE. It&amp;rsquo;s likely there are active CVEs in software you are using. After all, there are software vulnerabilities currently in existence that haven&amp;rsquo;t even been discovered (known as &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/glossary/#zero-day"&gt;zero-day vulnerabilities&lt;/a&gt;). With that said, this conceptual article aims to highlight a few practices and strategies you and your team can use to reduce the risk of CVEs on your software. It also includes a section on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/cve-risk/#recommended-tools"&gt;tools recommended by Chainguard&lt;/a&gt; that can help to reduce your attack surface area and minimize your risk of CVEs.&lt;/p&gt;</description></item><item><title>Considerations for Keeping Containers Up to Date</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/considerations-for-image-updates/</link><pubDate>Thu, 05 Oct 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/considerations-for-image-updates/</guid><description>&lt;p&gt;Chainguard rebuilds container images daily to ensure the latest security patches are always included, addressing a critical challenge in container security. While keeping images up-to-date is essential for receiving security updates and new features, updates must be balanced with stability concerns since any code change can potentially introduce breaking changes or impact dependent systems.&lt;/p&gt;
&lt;p&gt;Due to the complexity involved in modern containerized applications, there is no one-size-fits-all approach to keeping your container images up to date. With these conflicting approaches in mind, this article will explore how best to keep container images up-to-date.&lt;/p&gt;</description></item><item><title>Debugging distroless container images</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/troubleshooting/debugging-distroless-images/</link><pubDate>Thu, 18 May 2023 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/troubleshooting/debugging-distroless-images/</guid><description>&lt;p&gt;Because distroless images are minimal and don&amp;rsquo;t include a package manager or a shell, debugging issues that occur at runtime may require a distinctive approach.&lt;/p&gt;
&lt;p&gt;In this article, we&amp;rsquo;ll discuss a few different strategies to debug distroless images.&lt;/p&gt;
&lt;h2 id="1-using-development-container-image-variants" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;1. Using development container image variants&lt;/span&gt;
&lt;a href="#1-using-development-container-image-variants" class="anchor" aria-label="Link to 1. Using development container image variants" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Before moving a workload to a distroless runtime image, it is important to make sure that it runs without issues in a similar but less restrictive environment, which allows for easier debugging. It is also possible to make a temporary base image change from a distroless image to a fully featured image that offers more debugging capabilities.&lt;/p&gt;</description></item><item><title>Overview of Assumable Identities in Chainguard</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/</link><pubDate>Thu, 04 May 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/</guid><description>&lt;p&gt;Both &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainctl/"&gt;&lt;code&gt;chainctl&lt;/code&gt;&lt;/a&gt; and the &lt;a href="https://console.chainguard.dev/"&gt;Chainguard Console&lt;/a&gt; are useful tools for interacting with Chainguard. However, there may be times that you want to hand off certain administrative tasks to an automation system, like Buildkite or GitHub Actions.&lt;/p&gt;
&lt;p&gt;In such cases, you can create a Chainguard identity for these systems to assume, allowing them to perform certain tasks within a specific scope. You can restrict access to an identity so that only workflows that present tokens matching a specific issuer and subject can assume it. Likewise, assumable identities can be tied to certain roles — like &lt;code&gt;viewer&lt;/code&gt;, &lt;code&gt;owner&lt;/code&gt;, or &lt;code&gt;editor&lt;/code&gt; — letting you place strict limits on what a given identity is allowed to do.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a GitHub Actions Workflow</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/github-identity/</link><pubDate>Thu, 04 May 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/github-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt;
are identities that can be assumed by external applications or workflows in
order to perform certain tasks that would otherwise have to be done by a human.
For instance, an assumable identity can be used to allow a GitHub Actions
workflow to pull images from &lt;code&gt;cgr.dev&lt;/code&gt; without a static pull token.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to create an identity, and then create a GitHub Actions workflow that will assume the identity to interact with Chainguard resources.&lt;/p&gt;</description></item><item><title>Using Custom Identity Providers to Authenticate to Chainguard</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/custom-idps/</link><pubDate>Mon, 17 Apr 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/custom-idps/</guid><description>&lt;p&gt;The Chainguard platform supports Single Sign-on (SSO) authentication for users. By default, users can log in with GitHub, GitLab, and Google, but SSO support allows users to bring their own identity provider for authentication. This is helpful when your organization mandates using a corporate identity provider — like Okta or Azure Active Directory — to authenticate to SaaS products.&lt;/p&gt;
&lt;h2 id="usage" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Usage&lt;/span&gt;
&lt;a href="#usage" class="anchor" aria-label="Link to Usage" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Once an administrator has &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/custom-idps/#setup-and-administration"&gt;configured an identity provider&lt;/a&gt; and set up their organization, users can authenticate at the command line and in the web console using the identity provider’s organization.&lt;/p&gt;</description></item><item><title>Registry Overview</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/overview/</link><pubDate>Tue, 21 Mar 2023 16:36:47 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/overview/</guid><description>&lt;p&gt;Chainguard Registry hosts more secure container images with two access tiers: public Free images available to everyone, and production images that require authentication for enterprise features like SLAs and version pinning. The registry integrates with standard container tools while providing enhanced security through signed images and comprehensive metadata.&lt;/p&gt;
&lt;p&gt;While all public Chainguard Containers are freely available, logging in with a Chainguard account and authenticating when pulling from the registry provides a mechanism for Chainguard to contact you if there are any current or known upcoming issues with images you are pulling.&lt;/p&gt;</description></item><item><title>Overview of Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/overview/</link><pubDate>Thu, 01 Sep 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/overview/</guid><description>&lt;p&gt;&lt;a href="https://www.chainguard.dev/chainguard-images?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;Chainguard Containers&lt;/a&gt; are container images designed for enhanced security through minimalism and supply chain integrity. These images follow a distroless philosophy, containing only the application and its essential runtime dependencies, without shells, package managers, or other common utilities that can increase attack surface.&lt;/p&gt;
&lt;p&gt;Many Chainguard Containers implement a &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started-distroless/"&gt;distroless approach&lt;/a&gt;, which means they exclude shells, package managers, and other utilities typically found in container images. This design significantly reduces potential security vulnerabilities. For development and debugging purposes, Chainguard provides &lt;code&gt;-dev&lt;/code&gt; variants that include necessary tools while maintaining security best practices. All images are built using Chainguard OS, an operating system specifically designed to meet secure software supply chain requirements.&lt;/p&gt;</description></item><item><title>Verify Signed Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/using-policy-controller-to-verify-signed-chainguard-images/</link><pubDate>Wed, 22 Feb 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/using-policy-controller-to-verify-signed-chainguard-images/</guid><description>&lt;p&gt;This guide demonstrates how to use the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; to verify image signatures before admitting an image into a Kubernetes cluster. In this guide, you will create a &lt;code&gt;ClusterImagePolicy&lt;/code&gt; that checks for a keyless Cosign image signature, and then test the admission controller by running a signed &lt;code&gt;nginx&lt;/code&gt; image.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>How to Set Up Pull Through from Chainguard's Registry to Amazon ECR</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/ecr-pull-through/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/ecr-pull-through/</guid><description>&lt;p&gt;In March 2026, AWS &lt;a href="https://aws.amazon.com/about-aws/whats-new/2026/03/amazon-ecr-pull-through-cache-chainguard/"&gt;announced support&lt;/a&gt; for using Amazon Elastic Container Registry (ECR) as a pull-through cache for Chainguard&amp;rsquo;s registry. This means you can configure ECR to automatically cache Chainguard container images, reducing your dependency on Chainguard&amp;rsquo;s registry for production workloads.&lt;/p&gt;
&lt;p&gt;For setup and configuration instructions, refer to the official AWS documentation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html"&gt;Amazon ECR pull through cache rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache-working-pulling.html"&gt;Pulling an image with a pull through cache rule&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="learn-more" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Learn More&lt;/span&gt;
&lt;a href="#learn-more" class="anchor" aria-label="Link to Learn More" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;You can review our &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-registry/overview/"&gt;Registry Overview&lt;/a&gt; to learn more about Chainguard&amp;rsquo;s registry, or check out our &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/overview/"&gt;Containers documentation&lt;/a&gt; to learn more about Chainguard Containers.&lt;/p&gt;</description></item><item><title>Tips for migrating to Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-tips/</link><pubDate>Thu, 29 May 2025 12:56:52 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-tips/</guid><description>&lt;p&gt;The process of migrating over to Chainguard Containers isn&amp;rsquo;t always straightforward. To help customers become acquainted with Chainguard Containers as they go through the migration process, we&amp;rsquo;ve assembled this list of tips and strategies for migrating over their applications.&lt;/p&gt;
&lt;h2 id="use-development-variants-when-you-need-a-shell" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Use development variants when you need a shell&lt;/span&gt;
&lt;a href="#use-development-variants-when-you-need-a-shell" class="anchor" aria-label="Link to Use development variants when you need a shell" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Chainguard provides development (or &lt;code&gt;-dev&lt;/code&gt;) variants of its containers which include a shell and package manager to allow users to more easily debug and modify the image.&lt;/p&gt;</description></item><item><title>FedRAMP Technical Considerations &amp; Risk Factors</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/fedramp-considerations/</link><pubDate>Wed, 29 Jan 2025 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/fedramp-considerations/</guid><description>&lt;p&gt;Many frequently asked questions revolve around how organizations are meant to stay on top of the changing landscape for FedRAMP, PMOS, Revisions, and Certificates. This article outlines various considerations and risk factors that organizations should keep in mind when working to become and stay FedRAMP authorized.&lt;/p&gt;
&lt;h2 id="important-considerations-for-pmo-revision-trends" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Important Considerations for PMO Revision Trends&lt;/span&gt;
&lt;a href="#important-considerations-for-pmo-revision-trends" class="anchor" aria-label="Link to Important Considerations for PMO Revision Trends" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;There are a number of things one should keep in mind when analyzing revision trends from the FedRAMP Program Management Office (PMO) — which oversees the development of the FedRAMP program — and the changes in &lt;a href="https://csrc.nist.gov/projects/fips-140-3-transition-effort"&gt;FIPS 140-3&lt;/a&gt;. The following are of particular importance:&lt;/p&gt;</description></item><item><title>Kubernetes Policy Enforcement with Kyverno</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/enforcement/kyverno/</link><pubDate>Fri, 26 Sep 2025 10:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/enforcement/kyverno/</guid><description>&lt;p&gt;&lt;a href="https://kyverno.io/"&gt;Kyverno&lt;/a&gt; is an admission controller that enforces policies in Kubernetes clusters. This article describes how it can be leveraged to ensure resources follow best practices related to the use of Chainguard Containers.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow the examples in this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Chainguard Factory FAQs</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/faq/</link><pubDate>Thu, 17 Jul 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/faq/</guid><description>&lt;h2 id="what-is-the-chainguard-factory" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;What is the Chainguard Factory?&lt;/span&gt;
&lt;a href="#what-is-the-chainguard-factory" class="anchor" aria-label="Link to What is the Chainguard Factory?" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The Chainguard Factory refers to all the engineering and automation work that goes into building, publishing, and maintaining the software packaged in Chainguard&amp;rsquo;s products. This includes continuously monitoring, testing, and updating thousands of open source projects that make up Chainguard containers, libraries, and VMs.&lt;/p&gt;</description></item><item><title>Using chainctl to Manage Custom Assembly Resources</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-chainctl/</link><pubDate>Thu, 01 May 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-chainctl/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; is a tool that allows customers to create customized containers with extra packages and annotations added. This enables customers to reduce their risk exposure by creating container images that are tailored to their internal organization and application requirements while still having few-to-zero CVEs.&lt;/p&gt;
&lt;p&gt;You can use &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainctl/"&gt;&lt;code&gt;chainctl&lt;/code&gt;, Chainguard&amp;rsquo;s command-line interface tool&lt;/a&gt;, to further customize your Custom Assembly builds and retrieve information about them. This guide provides an overview of the relevant &lt;code&gt;chainctl&lt;/code&gt; commands and outlines how you can edit the configuration of Custom Assembly containers, as well as retrieve a list of a customized image&amp;rsquo;s builds and its build logs.&lt;/p&gt;</description></item><item><title>How End-of-Life Software Accumulates Vulnerabilities</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/how-eol-software-accumulates-cves/</link><pubDate>Wed, 04 Dec 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/how-eol-software-accumulates-cves/</guid><description>&lt;p&gt;Typically, specific versions of software receive updates on a schedule for a set amount of time. Eventually, though, every version of software will stop receiving support. When project maintainers stop providing updates, it&amp;rsquo;s known as the &lt;em&gt;End-of-Life&lt;/em&gt; (EOL) stage.&lt;/p&gt;
&lt;p&gt;Because it&amp;rsquo;s no longer being actively maintained, software begins to collect vulnerabilities when it reaches EOL. This problem can become compounded when using container images, as they often come with extra components from underlying base images which are all prone to accruing vulnerabilities. This can lead to images with hundreds of components, each collecting vulnerabilities and forming part of the attack surface.&lt;/p&gt;</description></item><item><title>How to Pull Packages from Chainguard Package Repositories through Artifactory</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifactory/artifactory-packages-pull-through/</link><pubDate>Thu, 14 Nov 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifactory/artifactory-packages-pull-through/</guid><description>&lt;p&gt;This tutorial details how to set up remote Alpine package (apk) repositories with &lt;a href="https://jfrog.com/artifactory/"&gt;JFrog Artifactory&lt;/a&gt;, which can provide pull-through caches for Chainguard package repositories. Specifically, this guide walks you through how to set up remote Artifactory repositories to serve as pull-through caches for a &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/private-apk-repos/"&gt;Chainguard Private APK Repository&lt;/a&gt; as well as Chainguard&amp;rsquo;s public package repositories. The guide also outlines how to configure a container image build to pull APK packages from these remote repositories using tokens generated by Artifactory.&lt;/p&gt;</description></item><item><title>STIGs for Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/image-stigs/</link><pubDate>Thu, 13 Jun 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/image-stigs/</guid><description>&lt;p&gt;Security Technical Implementation Guides (STIGs) trace their origin to the United States Department of Defense (DoD). They work in two layers. The Defense Information Systems Agency (DISA) publishes Security Requirements Guides (SRGs) — category-level security baselines covering technology types such as databases, web servers, or general purpose operating systems, written without vendor participation. Vendors then collaborate with DISA to produce a product-specific STIG — a formally reviewed configuration guide for a particular product, derived from the relevant SRG. If an organization runs software like MySQL 8.0 in a DoD environment, it must be configured to meet that product&amp;rsquo;s STIG. Beyond the DoD, compliance frameworks such as FedRAMP and CMMC have come to recognize STIGs as accepted security baselines.&lt;/p&gt;</description></item><item><title>Migrating to Node.js Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-node/</link><pubDate>Thu, 09 May 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-node/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s Node.js containers offer a streamlined migration path for applications seeking enhanced security posture through minimal, distroless design. Built on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/wolfi/"&gt;Wolfi&lt;/a&gt;, these containers significantly reduce attack surface compared to traditional Node.js images, resulting in &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/node/"&gt;fewer vulnerabilities&lt;/a&gt; and smaller image sizes. Daily automated builds ensure your applications always have the latest security patches without manual intervention.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;What is Distroless?&lt;/summary&gt;
Distroless container images are minimal container images containing only essential software required to build or execute an application. That means no package manager, no shell, and no bloat from software that only makes sense on bare metal servers.&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;What is Wolfi OS?&lt;/summary&gt;
&lt;a href="https://github.com/wolfi-dev/"&gt;Wolfi&lt;/a&gt; is a community Linux undistro created specifically for containers. This brings distroless to a new level, including additional features targeted at securing the software supply chain of your application environment: comprehensive SBOMs, signatures, daily updates, and timely CVE fixes.&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;What are multi-stage builds?&lt;/summary&gt;
&lt;p&gt;&lt;a href="https://docs.docker.com/build/building/multi-stage/"&gt;Multi-stage builds&lt;/a&gt; are a Docker feature that allow you to use multiple &lt;code&gt;FROM&lt;/code&gt; statements in a single Dockerfile, where each statement begins a new build stage. In a typical pattern, an early stage uses a full-featured builder image to compile code or generate artifacts, while a later stage uses a minimal runtime image and copies in only what's needed to run the application. Only what you explicitly copy from one stage carries forward — everything else is discarded when that stage completes.&lt;/p&gt;</description></item><item><title>How to Port a Sample Application to Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/porting-apps-to-chainguard/</link><pubDate>Wed, 10 Apr 2024 12:56:52 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/porting-apps-to-chainguard/</guid><description>&lt;h3 id="porting-key-points" class="heading-3" data-heading-level="3"&gt;
&lt;span class="heading-text"&gt;Porting Key Points&lt;/span&gt;
&lt;a href="#porting-key-points" class="anchor" aria-label="Link to Porting Key Points" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Chainguard&amp;rsquo;s distroless Containers have no shell or package manager by default. This is great for security, but sometimes you need these things, especially in builder images. For those cases we have &lt;code&gt;-dev&lt;/code&gt; variants (such as &lt;code&gt;cgr.dev/chainguard/python:latest-dev&lt;/code&gt;) which do include a shell and package manager.&lt;/li&gt;
&lt;li&gt;Chainguard Containers typically don&amp;rsquo;t run as root, so a &lt;code&gt;USER root&lt;/code&gt; statement may be required before installing software. This should be a temporary escalation only; after completing any root-level operations, you should create and switch to a dedicated non-root user (for example, using &lt;code&gt;addgroup&lt;/code&gt; and &lt;code&gt;adduser&lt;/code&gt;) or use the image&amp;rsquo;s built-in non-root user. Leaving the container running as root defeats the security purpose of using minimal images.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;-dev&lt;/code&gt; variants and &lt;code&gt;wolfi-base&lt;/code&gt; / &lt;code&gt;chainguard-base&lt;/code&gt; use BusyBox by default, so any &lt;code&gt;groupadd&lt;/code&gt; or &lt;code&gt;useradd&lt;/code&gt; commands will need to be ported to &lt;code&gt;addgroup&lt;/code&gt; and &lt;code&gt;adduser&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-categories/#starter-containers"&gt;Free tier&lt;/a&gt; of Containers provides &lt;code&gt;:latest&lt;/code&gt; and &lt;code&gt;:latest-dev&lt;/code&gt; versions. Our paid Production Containers offer tags for major and minor versions.&lt;/li&gt;
&lt;li&gt;We use apk tooling, so &lt;code&gt;apt install&lt;/code&gt; commands will become &lt;code&gt;apk add&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Chainguard Containers are based on &lt;code&gt;glibc&lt;/code&gt; and our packages cannot be mixed with Alpine packages.&lt;/li&gt;
&lt;li&gt;In some cases, the entrypoint in Chainguard Containers can be different from equivalent container images based on other distros, which can lead to unexpected behavior. You should always check the image&amp;rsquo;s specific documentation to understand how the entrypoint works.&lt;/li&gt;
&lt;li&gt;When needed, Chainguard recommends using a Base Container like &lt;code&gt;chainguard-base&lt;/code&gt; or a &lt;code&gt;-dev&lt;/code&gt; variant to install an application&amp;rsquo;s OS-level dependencies.&lt;/li&gt;
&lt;li&gt;Although &lt;code&gt;-dev&lt;/code&gt; variants are still more secure than most popular container images based on other distros, for increased security on production environments we recommend combining them with a distroless variant in a multi-stage build.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-sample-application" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;The Sample Application&lt;/span&gt;
&lt;a href="#the-sample-application" class="anchor" aria-label="Link to The Sample Application" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The application in question is &lt;a href="https://github.com/using-docker/identidock"&gt;identidock&lt;/a&gt;. This application was written for the book &lt;a href="https://learning.oreilly.com/library/view/using-docker/9781491915752/"&gt;Using Docker&lt;/a&gt; about ten years ago, which shows that we can still migrate software of this age to a new container while realizing the benefits of a no-to-low CVE count. The application itself will create &lt;a href="https://en.wikipedia.org/wiki/Identicon"&gt;identicons&lt;/a&gt; for a user name, similar to what &lt;a href="https://github.blog/2013-08-14-identicons/"&gt;GitHub generates for users with no avatar&lt;/a&gt;. It was designed at the time to demonstrate a &amp;ldquo;microservices&amp;rdquo; approach, and as such it&amp;rsquo;s made up of 3 services:&lt;/p&gt;</description></item><item><title>Getting Started with Distroless Container Images</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/getting-started-distroless/</link><pubDate>Thu, 21 Mar 2024 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/getting-started-distroless/</guid><description>&lt;h2 id="about-distroless-container-images" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;About Distroless Container Images&lt;/span&gt;
&lt;a href="#about-distroless-container-images" class="anchor" aria-label="Link to About Distroless Container Images" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;a href="https://www.chainguard.dev/unchained/minimal-container-images-towards-a-more-secure-future"&gt;Distroless&lt;/a&gt; container images, like the ones built by Chainguard, are a type of container image designed to include only essential software required to run an application or service. Unlike traditional images based on Debian or Ubuntu — which include package managers, utilities, and shells — Chainguard&amp;rsquo;s distroless images remove these components to significantly reduce attack surface and minimize vulnerabilities.&lt;/p&gt;</description></item><item><title>Debian compatibility</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/debian-compatibility/</link><pubDate>Thu, 08 Feb 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/debian-compatibility/</guid><description>&lt;p&gt;Chainguard Containers and Debian base images have different binaries and scripts included in their respective &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt; packages.&lt;/p&gt;
&lt;p&gt;The following table lists common tools and their corresponding package(s) in both Wolfi and Debian distributions.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;$PATH&lt;/code&gt; locations like &lt;code&gt;/usr/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; are not included here. If you have compatibility issues with tools that are included in both &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt;, be sure to check &lt;code&gt;$PATH&lt;/code&gt; order and confirm which version of a tool is being run.&lt;/p&gt;</description></item><item><title>Debugging Distroless Containers with Docker Debug</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/troubleshooting/debugging_distroless/</link><pubDate>Fri, 26 Jan 2024 01:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/troubleshooting/debugging_distroless/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ELxIBB2Uy2E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools-used-in-this-video" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools used in this video&lt;/span&gt;
&lt;a href="#tools-used-in-this-video" class="anchor" aria-label="Link to Tools used in this video" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docker.com"&gt;Docker Desktop&lt;/a&gt; (Note a paid subscription is required.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hey folks, I wanted to record a short video explaining how you can debug container images, even distroless ones.&lt;/p&gt;</description></item><item><title>How to Use Chainguard Security Advisories</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/security-advisories/how-to-use/</link><pubDate>Wed, 27 Dec 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/security-advisories/how-to-use/</guid><description>&lt;p&gt;When using scanners such as &lt;a href="https://github.com/anchore/grype"&gt;Grype&lt;/a&gt; or &lt;a href="https://docs.docker.com/scout/"&gt;Docker Scout&lt;/a&gt; to scan for vulnerabilities in Chainguard Containers, you&amp;rsquo;ll often find that there are few or no CVEs present. However, CVEs can sometimes be found in Chainguard Containers, and you may also encounter CVEs if you&amp;rsquo;re using older tags. In these cases, you will likely wish to check Chainguard&amp;rsquo;s security advisories for information on which CVEs will cause security issues in your deployment.&lt;/p&gt;
&lt;p&gt;To help demystify the nature of CVEs within Chainguard Containers, we&amp;rsquo;ve created a self-service &lt;a href="https://images.chainguard.dev/security?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-working-with-images-security-advisories-how-to-use"&gt;Security Advisories page&lt;/a&gt; that lists every security advisory published for Chainguard Containers. Having this information available allows you to view whether Chainguard is aware of a specific vulnerability reported to exist within a Chainguard Container and whether we&amp;rsquo;ve mitigated or are planning to mitigate the CVE.&lt;/p&gt;</description></item><item><title>Chainguard Containers Network Requirements</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/network-requirements/</link><pubDate>Fri, 08 Sep 2023 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/network-requirements/</guid><description>&lt;p&gt;This document provides an overview of network requirements for using &lt;a href="https://www.chainguard.dev/chainguard-images?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;Chainguard Containers&lt;/a&gt;. To use Chainguard tools and Containers in environments with firewalls, VPNs, and IDS/IPS systems, you will need to add some rules to allow traffic into and out of your networks.&lt;/p&gt;
&lt;p&gt;Chainguard Containers do not call Chainguard services while running, so no network changes would be required to the runtime environment. Review the &lt;strong&gt;Notes&lt;/strong&gt; column for more info on each Hostname.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a GitLab CI/CD Pipeline</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/gitlab-identity/</link><pubDate>Wed, 28 Jun 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/gitlab-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines two methods for how to create a Chainguard identity: &lt;code&gt;chainctl&lt;/code&gt; and Terraform. It then walks through how to create a GitLab CI/CD pipeline that will assume the identity to interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>How To Integrate Okta SSO with Chainguard</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/okta/</link><pubDate>Mon, 17 Apr 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/okta/</guid><description>&lt;p&gt;The Chainguard platform supports Single sign-on (SSO) authentication for users. By default, users can log in with GitHub, GitLab and Google, but SSO support allows users to bring their own identity provider for authentication.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create an Okta application and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Okta and will no longer be limited to the default SSO options.&lt;/p&gt;</description></item><item><title>Getting Started with the Go Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/go/</link><pubDate>Tue, 28 Feb 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/go/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/go/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-getting-started-go"&gt;Go container image&lt;/a&gt; provides a secure foundation for building Go applications with significantly fewer vulnerabilities than traditional Go images. The distroless &lt;code&gt;latest&lt;/code&gt; variant contains only the Go compiler and runtime, while the &lt;code&gt;latest-dev&lt;/code&gt; variant includes additional build tools and package management capabilities for development workflows.&lt;/p&gt;
&lt;p&gt;In this guide, we&amp;rsquo;ll demonstrate how to build and execute Go applications using Chainguard Containers, using three examples from our &lt;a href="https://github.com/chainguard-dev/edu-images-demos"&gt;demos repository&lt;/a&gt;. In the first example, we&amp;rsquo;ll build a CLI application using a Docker multi-stage build. In the second example, we&amp;rsquo;ll build an application that&amp;rsquo;s accessible by HTTP server, also using a Docker multi-stage build to obtain an optimized runtime. The third example shows how to build an image using &lt;a href="https://ko.build/"&gt;ko&lt;/a&gt;, a tool that enables you to build container images from Go programs and push them to container registries without requiring a Dockerfile.&lt;/p&gt;</description></item><item><title>How to Use Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/how-to-use-chainguard-images/</link><pubDate>Thu, 01 Sep 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/how-to-use-chainguard-images/</guid><description>&lt;p&gt;&lt;a href="https://images.chainguard.dev"&gt;Chainguard Containers&lt;/a&gt; are minimal container images designed to reduce vulnerabilities and attack surface compared to traditional base images. These images use the &lt;a href="https://wiki.alpinelinux.org/wiki/Package_management"&gt;apk&lt;/a&gt; package format to achieve smaller sizes while maintaining complete provenance information with cryptographic signatures, ensuring both enhanced security and traceability.&lt;/p&gt;
&lt;p&gt;In this guide, you&amp;rsquo;ll find general instructions on how to get started using Chainguard Containers and how to migrate existing container-based workflows to use our images. For specific image usage instructions, please refer to our &lt;a href="https://images.chainguard.dev"&gt;Chainguard Containers Directory&lt;/a&gt;, which contains the full list of all images available to the public and their respective documentation.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity to Authenticate from Azure</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/azure-identity/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/azure-identity/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you&amp;rsquo;re authenticating from a workload running in Azure
Kubernetes Service (AKS), refer to the
&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/kubernetes-identity/"&gt;Kubernetes identity guide&lt;/a&gt;
instead.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt;
are identities that can be assumed by external applications or workflows in
order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity that can be assumed
by an Azure workload — such as a VM, Container App, or Function — using an
&lt;a href="https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview"&gt;Azure managed identity&lt;/a&gt;
and then used to interact with the Chainguard API.&lt;/p&gt;</description></item><item><title>Using GitOps to Manage Custom Assembly Resources</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-gitops/</link><pubDate>Thu, 29 Jan 2026 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-gitops/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; is a tool that allows customers to create customized container images with extra packages and annotations added. This enables customers to reduce their risk exposure by creating container images that are tailored to their internal organization and application requirements while still having few-to-zero CVEs. It can be managed in the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-console/"&gt;Chainguard Console&lt;/a&gt;, &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-chainctl/"&gt;with chainctl&lt;/a&gt;, &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-api-demo/"&gt;with the API&lt;/a&gt;, or via CI/CD.&lt;/p&gt;
&lt;p&gt;This guide shows how to use Chainguard Custom Assembly as code via CI/CD, storing your configuration in Git and using automation to apply changes and trigger builds. The examples in this guide focus on GitHub Actions, as seen in &lt;a href="https://github.com/chainguard-demo/custom-assembly-as-code"&gt;Chainguard&amp;rsquo;s custom-assembly-as-code demo repository&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity to Authenticate from AWS</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/aws-identity-oidc/</link><pubDate>Mon, 05 Jan 2026 09:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/aws-identity-oidc/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to access Chainguard resources or perform certain actions.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to create a Chainguard identity that can be assumed by an AWS IAM user or IAM role using &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_outbound.html"&gt;AWS IAM outbound identity federation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, outbound identity federation must be enabled for your AWS account. Follow &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_outbound_getting_started.html#enable-outbound-federation"&gt;the official AWS documentation&lt;/a&gt; to set this up.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity to Authenticate from AWS (Legacy)</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/aws-identity/</link><pubDate>Fri, 28 Nov 2025 16:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/aws-identity/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This page describes a custom implementation of assumable identities for AWS that was
developed before AWS natively supported issuing OIDC tokens with &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_outbound.html"&gt;IAM outbound
identity federation&lt;/a&gt;.
If possible, you should follow the instructions on
&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/aws-identity-oidc/"&gt;this page&lt;/a&gt;
instead.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to access Chainguard resources or perform certain actions.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to create a Chainguard identity that can be assumed by an AWS user or IAM role and used to authorize requests from AWS services and workloads hosted on platforms like EC2, ECS, Lambda, and EKS.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a Kubernetes Pod</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/kubernetes-identity/</link><pubDate>Thu, 07 Aug 2025 13:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/kubernetes-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt;
are identities that can be assumed by external applications or workflows in
order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity that can be assumed
by a Kubernetes pod and then used to interact with the Chainguard API.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>Requesting New Chainguard Resources</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/request-resources/</link><pubDate>Thu, 26 Feb 2026 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/request-resources/</guid><description>&lt;p&gt;The Chainguard Console includes the Requests section where customers can submit and track requests for resources that Chainguard doesn&amp;rsquo;t currently offer. This improves transparency around which technologies Chainguard is working to build and helps minimize duplicate build requests.&lt;/p&gt;
&lt;p&gt;This guide provides an overview of how to submit a request for a new resource to Chainguard, as well as the limitations on what resources can be built.&lt;/p&gt;
&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The Requests section is in beta.&lt;/p&gt;</description></item><item><title>How to Sync Images from Chainguard's Registry to Harbor</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/harbor/</link><pubDate>Tue, 19 Aug 2025 12:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/harbor/</guid><description>&lt;p&gt;&lt;a href="https://goharbor.io"&gt;Harbor&lt;/a&gt; is an open-source artifact registry. It&amp;rsquo;s designed to securely store, manage, and distribute OCI artifacts, including container images and Helm charts by enforcing policies like vulnerability scanning, image signing, and role-based access control. Harbor delivers enterprise-grade compliance, performance, and interoperability across platforms like Kubernetes and Docker, all accessible via a web UI or RESTful API.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to sync images from Chainguard&amp;rsquo;s registry to a Harbor instance. It describes two approaches:&lt;/p&gt;</description></item><item><title>Using the Chainguard API to Manage Custom Assembly Resources</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-api-demo/</link><pubDate>Thu, 01 May 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-api-demo/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; is a tool that allows customers to create customized containers with extra packages added. This enables customers to reduce their risk exposure by creating container images that are tailored to their internal organization and application requirements while still having few-to-zero CVEs.&lt;/p&gt;
&lt;p&gt;You can use the Chainguard API to further customize your Custom Assembly builds and retrieve information about them. This tutorial highlights a demo application (which can be found in &lt;a href="https://github.com/chainguard-dev/edu-images-demos/tree/main"&gt;Chainguard Academy&amp;rsquo;s Demo Applications repository&lt;/a&gt;) which, when run, updates a Custom Assembly container&amp;rsquo;s configuration based on a provided YAML file.&lt;/p&gt;</description></item><item><title>Strategies and Tooling for Updating Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/strategies-tools-updating-images/</link><pubDate>Mon, 02 Dec 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/strategies-tools-updating-images/</guid><description>&lt;p&gt;When it comes to keeping a system secure, one of the most important measures you can take is to regularly apply updates. In modern, containerized infrastructures, this normally means updating containers to use only the latest container images that are still maintained. A casual observer might expect such a standard and important task to have agreed-on best practices and standardized tooling, but they might be surprised by the wide variety of different solutions and opinions on this problem.&lt;/p&gt;</description></item><item><title>Debugging Distroless Container Images with Kubectl Debug and CDebug</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/troubleshooting/kubectl_cdebug/</link><pubDate>Tue, 21 May 2024 15:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/troubleshooting/kubectl_cdebug/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LQUZGE_w-20?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools-used-in-this-video" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools used in this video&lt;/span&gt;
&lt;a href="#tools-used-in-this-video" class="anchor" aria-label="Link to Tools used in this video" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/reference/kubectl/"&gt;kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/iximiuz/cdebug"&gt;cdebug&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;So a while back I did a video on using Docker Debug to debug distroless containers.&lt;/p&gt;</description></item><item><title>How to Set Up Pull Through from Chainguard's Registry to Nexus</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/nexus-pull-through/</link><pubDate>Thu, 28 Mar 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/nexus-pull-through/</guid><description>&lt;p&gt;Organizations can use Chainguard Containers along with third-party software repositories in order to integrate with current workflows as the single source of truth for software artifacts. In this situation, you can set up a proxy repository to function as a mirror of &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-registry/overview/"&gt;Chainguard&amp;rsquo;s registry&lt;/a&gt;. This mirror can then serve as a pull through cache for your Chainguard Containers.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to set up a repository with &lt;a href="https://www.sonatype.com/products/sonatype-nexus-repository"&gt;Sonatype Nexus&lt;/a&gt;. Specifically, it will walk you through how to set up one repository you can use as a pull through cache for Chainguard&amp;rsquo;s Free containers or for Production containers originating from a private Chainguard repository.&lt;/p&gt;</description></item><item><title>Migrating Dockerfiles to Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migrating-to-chainguard-images/</link><pubDate>Mon, 25 Mar 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migrating-to-chainguard-images/</guid><description>&lt;p&gt;Chainguard Containers provide enhanced security through minimal design and built-in provenance attestation, requiring some adjustments when migrating from traditional base images. Built on the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/wolfi/overview/"&gt;Wolfi&lt;/a&gt; Linux distribution, these images offer compatibility with most applications while significantly reducing attack surface and vulnerabilities.&lt;/p&gt;
&lt;p&gt;A general migration process would involve the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Identify the base image you need&lt;/strong&gt;. Check out the &lt;a href="https://images.chainguard.dev/directory?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-migration-migrating-to-chainguard-images"&gt;Chainguard Containers Directory&lt;/a&gt; to identify the image that is the closest match to what you currently use. You may also use &lt;a href="https://images.chainguard.dev/directory/image/wolfi-base/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-migration-migrating-to-chainguard-images"&gt;wolfi-base&lt;/a&gt; as a flexible starting point for your experimentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Try the &lt;code&gt;-dev&lt;/code&gt; variant of the image first.&lt;/strong&gt; Chainguard Containers typically have a &lt;strong&gt;distroless&lt;/strong&gt; variant, which is very minimal and doesn&amp;rsquo;t include &lt;code&gt;apk&lt;/code&gt;, and a &lt;strong&gt;dev&lt;/strong&gt; variant that contains tooling necessary to build applications and install new packages. Start with the &lt;strong&gt;dev&lt;/strong&gt; variant or the &lt;strong&gt;wolfi-base&lt;/strong&gt; image to have more room for customization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identify packages you need to install&lt;/strong&gt;. Depending on your current base image, you may need to include additional packages to meet dependencies. Refer to the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migrating-to-chainguard-images/#searching-for-packages"&gt;Searching for Packages&lt;/a&gt; section for more details on how to find packages. Make sure the packages you intend to install will work with the base image you select — for example, if you select an older base image built with an older release of &lt;code&gt;glibc&lt;/code&gt; and want to install newer packages built with a newer release, you will encounter problems. It&amp;rsquo;s a good rule of thumb to use the newest base image you can with the newest packages that match the build.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrate to a distroless image&lt;/strong&gt;. Evaluate the option of using a Docker multi-stage build to create a final distroless image containing only what you need. Check the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started-distroless/"&gt;Getting Started with Distroless images&lt;/a&gt; for more details of how to work with distroless images. Although not required, this process should give you a smaller image with additional safeguards.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are some differences in Wolfi&amp;rsquo;s &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt; packages when compared to their counterparts in distros such as Debian or even Alpine. Some binaries and scripts are not included by default, which contributes to a smaller package size. This was done in order to keep images to a minimum, but be aware that some commands might still be available through separate packages.&lt;/p&gt;</description></item><item><title>How Chainguard Containers are Tested</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-testing/</link><pubDate>Thu, 21 Mar 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-testing/</guid><description>&lt;p&gt;Chainguard Containers are minimal, distroless container images that you can use to build and run secure applications. Given the importance of secure, highly performant images, Chainguard performs testing to ensure our container images match the functionality of upstream and other external counterparts.&lt;/p&gt;
&lt;p&gt;This article provides a high-level overview of Chainguard&amp;rsquo;s approach to testing when building new container images to ensure their security and consistency with comparable container images.&lt;/p&gt;
&lt;h2 id="build-requirements-for-new-container-images" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Build requirements for new container images&lt;/span&gt;
&lt;a href="#build-requirements-for-new-container-images" class="anchor" aria-label="Link to Build requirements for new container images" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Chainguard has a set of requirements in place that new container images must meet in order to be included in our &lt;a href="https://images.chainguard.dev?utm=docs"&gt;Containers Directory&lt;/a&gt;. These requirements fall into two categories:&lt;/p&gt;</description></item><item><title>Ubuntu Compatibility</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/ubuntu-compatibility/</link><pubDate>Fri, 23 Feb 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/ubuntu-compatibility/</guid><description>&lt;p&gt;Chainguard Containers and Ubuntu base images have different binaries and scripts included in their respective &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt; packages.&lt;/p&gt;
&lt;p&gt;The following table lists common tools and their corresponding package(s) in both Wolfi and Ubuntu distributions.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;$PATH&lt;/code&gt; locations like &lt;code&gt;/usr/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; are not included here. If you have compatibility issues with tools that are included in both &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt;, be sure to check &lt;code&gt;$PATH&lt;/code&gt; order and confirm which version of a tool is being run.&lt;/p&gt;</description></item><item><title>Getting Started with the Chainguard Istio Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/istio/</link><pubDate>Thu, 14 Dec 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/istio/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://istio.io"&gt;Istio&lt;/a&gt; container images provide a security-hardened foundation for service mesh deployments with significantly reduced vulnerabilities compared to standard Istio images. Istio extends Kubernetes to establish a programmable, application-aware network using the Envoy service proxy, bringing traffic management, telemetry, and security to complex deployments. Built on Wolfi OS, Chainguard&amp;rsquo;s minimal Istio images maintain full compatibility while enhancing security posture.&lt;/p&gt;
&lt;p&gt;We will demonstrate how to get started with the Chainguard Istio container images on an
example kind cluster. To get started, you&amp;rsquo;ll need Docker, kind, &lt;code&gt;kubectl&lt;/code&gt;, and &lt;code&gt;istioctl&lt;/code&gt;
installed. If you are missing any, you can follow the relevant link to get started.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a Buildkite Pipeline</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/buildkite-identity/</link><pubDate>Wed, 17 May 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/buildkite-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to create an identity using Terraform, and then how to update a Buildkite pipeline so that it can assume the identity and interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you must have the following in place:&lt;/p&gt;</description></item><item><title>How To Integrate Ping Identity SSO with Chainguard</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/ping-id/</link><pubDate>Mon, 17 Apr 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/ping-id/</guid><description>&lt;p&gt;The Chainguard platform supports Single sign-on (SSO) authentication for users. By default, users can log in with GitHub, GitLab and Google, but SSO support allows users to bring their own identity provider for authentication.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create a Ping Identity Application and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Ping and will no longer be limited to the default SSO options.&lt;/p&gt;</description></item><item><title>Adding Custom Certificates with Custom Assembly</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-certs/</link><pubDate>Thu, 12 Mar 2026 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-certs/</guid><description>&lt;p&gt;Many enterprise environments use internal certificate authorities (CAs) to issue certificates for internal services. These custom certificates need to be trusted by containers that communicate with the internal services. Custom Assembly allows you to build custom certificates directly into your container images, ensuring they trust your organization&amp;rsquo;s internal services without requiring manual certificate mounting at runtime.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you are looking for a way to embed certificates at build time, refer to our guide on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/incert-custom-certs/"&gt;How To Use incert to Create Container Images with Built-in Custom Certificates&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>What does the Chainguard Factory build?</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/what-factory-builds/</link><pubDate>Sat, 02 Aug 2025 16:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/factory/what-factory-builds/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/V4xIcHDhBhw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Interviewer&lt;/strong&gt;: So Dustin, what does the Factory actually build every day?&lt;/p&gt;</description></item><item><title>How To Integrate Keycloak with Chainguard</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/keycloak/</link><pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/keycloak/</guid><description>&lt;p&gt;By default, the Chainguard platform supports Single sign-on (SSO) authentication for users with GitHub, GitLab, and Google.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create a Keycloak Client on your existing Keycloak instance and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Keycloak and will no longer be limited to the default SSO options.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Chainguard's container variants</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/differences-development-production/</link><pubDate>Fri, 01 Nov 2024 07:52:00 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/differences-development-production/</guid><description>&lt;p&gt;Chainguard Containers follow a distroless philosophy, meaning that only software absolutely necessary for a specific workload is included in an image. Designed to be as minimal as possible, Chainguard&amp;rsquo;s standard container images do not contain package managers such as apk, shells such as b/a/sh, or development utilities such as Git or text editors. However, this distroless approach isn&amp;rsquo;t suitable for every use case. For this reason, most Chainguard Containers have what&amp;rsquo;s called a &lt;em&gt;development&lt;/em&gt; variant.&lt;/p&gt;</description></item><item><title>How Chainguard Issues Security Advisories</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/security-advisories/how-chainguard-issues/</link><pubDate>Fri, 26 Jul 2024 18:09:12 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/security-advisories/how-chainguard-issues/</guid><description>&lt;p&gt;When you scan a newly-built Chainguard Container with a vulnerability scanner, typically, no CVEs will be reported. However, as software packages age, more vulnerabilities are reported and CVEs will begin to accumulate in container images. When this happens, Chainguard releases security advisories to communicate these vulnerabilities to downstream images users.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Advisory timestamps represent when updates are made to the advisory page, not when they were first detected and triaged by Chainguard.&lt;/p&gt;</description></item><item><title>How to Set Up Pull Through from Chainguard's Registry to Cloudsmith</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/cloudsmith-pull-through/</link><pubDate>Tue, 16 Jul 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/cloudsmith-pull-through/</guid><description>&lt;p&gt;Organizations often have their own internal software repositories and registries integrated into their systems. This guide explains how to set up the Cloudsmith artifact repository to ingest &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/overview/"&gt;Chainguard Containers&lt;/a&gt; by acting as a pull-through cache.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to set up a remote repository with &lt;a href="https://cloudsmith.com/"&gt;Cloudsmith&lt;/a&gt;. It will walk you through how to set up a Cloudsmith repository you can use as a pull through cache for Chainguard&amp;rsquo;s Free containers or for Production containers originating from a private Chainguard repository.&lt;/p&gt;</description></item><item><title>Getting Started with the Laravel Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/laravel/</link><pubDate>Fri, 17 May 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/laravel/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/laravel/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-getting-started-laravel"&gt;Laravel container image&lt;/a&gt; provides a secure foundation for &lt;a href="https://laravel.com"&gt;Laravel&lt;/a&gt; applications with minimal vulnerabilities compared to traditional PHP images. This specialized image includes all necessary PHP extensions and tooling for Laravel development while maintaining Chainguard&amp;rsquo;s security-first approach, enabling developers to build complex applications without compromising on security.&lt;/p&gt;
&lt;p&gt;In this guide, we&amp;rsquo;ll set up a demo and demonstrate how you can use Chainguard Containers to develop, build, and run Laravel applications.&lt;/p&gt;
&lt;p&gt;This tutorial requires Docker to be installed on your local machine. If you don&amp;rsquo;t have Docker installed, you can download and install it from the &lt;a href="https://docs.docker.com/get-docker/"&gt;official Docker website&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Migrating to Python Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-python/</link><pubDate>Thu, 02 May 2024 15:06:00 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-python/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s Python containers provide a migration path to significantly reduce vulnerabilities in Python applications while maintaining full compatibility with existing workloads. This guide explains how to migrate your containerized Python applications to benefit from Chainguard&amp;rsquo;s enhanced security posture and daily updates.&lt;/p&gt;
&lt;p&gt;Chainguard Containers are built on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/wolfi/"&gt;Wolfi&lt;/a&gt;, a &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/videos/distroless/"&gt;distroless&lt;/a&gt; Linux distribution designed for security and a reduced attack surface. Chainguard Containers are smaller and have &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/python/"&gt;low to no CVE&lt;/a&gt;. Our Chainguard Containers for Python are built nightly for extra freshness, so they&amp;rsquo;re always up-to-date with the latest remediations.&lt;/p&gt;</description></item><item><title>Red Hat UBI Compatibility</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/red-hat-compatibility/</link><pubDate>Fri, 23 Feb 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/compatibility/red-hat-compatibility/</guid><description>&lt;p&gt;Chainguard Containers and Red Hat UBI base images have different binaries and scripts included in their respective &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt; packages. Note that Red Hat UBI images by default do not have a &lt;code&gt;busybox&lt;/code&gt; package.&lt;/p&gt;
&lt;p&gt;The following table lists common tools and their corresponding package(s) in both Wolfi and Red Hat distributions.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;$PATH&lt;/code&gt; locations like &lt;code&gt;/usr/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; are not included here. If you have compatibility issues with tools that are included in both &lt;code&gt;busybox&lt;/code&gt; and &lt;code&gt;coreutils&lt;/code&gt;, be sure to check &lt;code&gt;$PATH&lt;/code&gt; order and confirm which version of a tool is being run.&lt;/p&gt;</description></item><item><title>Using the Chainguard Console</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/images-directory/</link><pubDate>Fri, 23 Feb 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/images-directory/</guid><description>&lt;p&gt;This guide serves as a walkthrough of the Chainguard Console, which is accessible to anyone, but you&amp;rsquo;ll first need to &lt;a href="https://console.chainguard.dev/auth/login"&gt;create an account and log in&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re not ready to create a Chainguard account, you can follow along with the public &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/chainguard-directory/"&gt;Chainguard Directory&lt;/a&gt; which offers similar information, but is only informative as it is not connected to your organization or account. If you use the &lt;em&gt;Sign In&lt;/em&gt; link in the directory, it brings you to the console.&lt;/p&gt;</description></item><item><title>Chainguard FIPS Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/fips-images/</link><pubDate>Thu, 08 Feb 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/fips-images/</guid><description>&lt;h2 id="what-is-fips" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;What is FIPS?&lt;/span&gt;
&lt;a href="#what-is-fips" class="anchor" aria-label="Link to What is FIPS?" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;a href="https://www.nist.gov/itl/publications-0/federal-information-processing-standards-fips"&gt;Federal Information Processing Standards&lt;/a&gt; (FIPS) are standards developed by the National Institute of Standards and Technology (NIST) in accordance with the Federal Information Security Management Act (FISMA). FIPS compliance ensures that cryptographic security services within applications meet strict security and integrity standards, and are implemented and configured correctly.&lt;/p&gt;</description></item><item><title>Using Renovate with Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/renovate/</link><pubDate>Tue, 05 Sep 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/updating-images/renovate/</guid><description>&lt;p&gt;&lt;a href="https://github.com/renovatebot/renovate"&gt;Renovate&lt;/a&gt; can be used to alert on updates to Chainguard Containers. This can be an effective way to keep your images up-to-date and free of CVEs. This article explains how to configure Renovate to support Chainguard Containers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: This article describes using Renovate to alert on new versions of Chainguard Containers. It is not about alerts for Wolfi packages (which is unsupported at the time of writing).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;This guide assumes you have successfully installed and configured Renovate. If you haven&amp;rsquo;t already set this up, please refer to the &lt;a href="https://docs.renovatebot.com/getting-started/installing-onboarding/"&gt;installation instructions&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Using the Tag History API</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/using-the-tag-history-api/</link><pubDate>Fri, 26 May 2023 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/using-the-tag-history-api/</guid><description>&lt;p&gt;Chainguard Containers have automated nightly builds, which ensures our container images are always fresh including any recent patches and updated software. Even though it is important to keep your base images always updated, there will be situations where you&amp;rsquo;ll want to keep using an older build to make sure nothing will change in your container environment until you feel it&amp;rsquo;s safe to update.&lt;/p&gt;
&lt;p&gt;For cases like this, it is useful to point your Dockerfile to use a specific &lt;strong&gt;container image digest&lt;/strong&gt; as base image.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a Bitbucket Pipeline</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/bitbucket-identity/</link><pubDate>Wed, 17 May 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/bitbucket-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity using Terraform, and then how to update a Bitbucket pipeline so that it can assume the identity and interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>How To Integrate Microsoft Entra ID SSO with Chainguard</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/ms-entra-id/</link><pubDate>Mon, 17 Apr 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/custom-idps/idp-providers/ms-entra-id/</guid><description>&lt;p&gt;The Chainguard platform supports Single sign-on (SSO) authentication for users. By default, users can log in with GitHub, GitLab and Google, but SSO support allows users to bring their own identity provider for authentication.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create a Microsoft Entra ID (formerly Azure Active Directory) application and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Entra ID and will no longer be limited to the default SSO options.&lt;/p&gt;</description></item><item><title>Migrating to .NET Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-dotnet/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-guides/migrating-dotnet/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/dotnet-sdk/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-migration-migrating-dotnet"&gt;.NET container images&lt;/a&gt; provide a security-hardened foundation for building and running applications with significantly fewer vulnerabilities than .NET images provided by Microsoft. Chainguard&amp;rsquo;s .NET container images maintain full .NET compatibility while dramatically reducing the attack surface.&lt;/p&gt;
&lt;p&gt;This guide demonstrates migrating a .NET application from Microsoft&amp;rsquo;s official images to Chainguard&amp;rsquo;s .NET container images by comparing two nearly identical versions of an application side-by-side. This guide also highlights concrete examples of the security improvements resulting from migrating to Chainguard Containers.&lt;/p&gt;</description></item><item><title>Use chainctl to Create an Assumable Identity for a Jenkins Pipeline</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-chainctl/</link><pubDate>Sun, 07 Sep 2025 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-chainctl/</guid><description>&lt;p&gt;&lt;a href="https://www.jenkins.io/"&gt;Jenkins&lt;/a&gt; is an open source automation server that supports building, deploying, and automating projects.&lt;/p&gt;
&lt;p&gt;This guide explains how to use &lt;code&gt;chainctl&lt;/code&gt; to create an assumable identity and configure Jenkins to use that identity to authenticate to Chainguard. To accomplish this, create an OIDC token credential in Jenkins and a matching Chainguard identity that uses the Jenkins OIDC URL, then put the process into an example Jenkins build pipeline.&lt;/p&gt;
&lt;p&gt;To do this using Terraform, follow the instructions in &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-terraform/"&gt;Use Terraform to Create an Assumable Identity for a Jenkins Pipeline&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Using CVE Visualizations</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/cve_visualizations/</link><pubDate>Thu, 19 Dec 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/cve_visualizations/</guid><description>&lt;p&gt;Chainguard provides CVE Visualizations for all of its container images. This feature creates reports with CVE comparisons between Chainguard Containers and popular alternatives, as well as historical CVE remediation metrics. CVE Visualizations provide insight into image health and can help teams measure the engineering, security, and economic benefits gained from using Chainguard Containers.&lt;/p&gt;
&lt;p&gt;This guide outlines how you can access a container image&amp;rsquo;s CVE Visualization in both the Chainguard Console and in the Containers Directory.&lt;/p&gt;</description></item><item><title>Chainguard Containers Product Release Lifecycle</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/versions/</link><pubDate>Mon, 08 Jan 2024 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/versions/</guid><description>&lt;p&gt;&lt;a href="https://images.chainguard.dev/?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;Chainguard
Containers&lt;/a&gt;
are able to offer few-to-zero known vulnerabilities because they are updated
frequently. Because of this continuous release cycle, the best way to mitigate
vulnerabilities is to use the newest build of each Chainguard Container
available. Chainguard keeps Containers up to date by doing one or more of the
following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Applying new releases from upstream projects&lt;/li&gt;
&lt;li&gt;Rapidly applying upstream patches to current releases — you can read more
about this in our blog post, “&lt;a href="https://www.chainguard.dev/unchained/how-chainguard-fixes-vulnerabilities?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;How Chainguard fixes vulnerabilities before
they&amp;rsquo;re
detected&lt;/a&gt;”&lt;/li&gt;
&lt;li&gt;Applying Chainguard patches to OSS software&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Upstream projects are updated frequently for many reasons, including to combat
CVEs, and Chainguard ensures that the most up-to-date software is available in
all Chainguard Containers. Additionally, Chainguard often identifies CVEs and
other issues before scanners can detect them, so Chainguard may offer a patch to
a vulnerable dependency to support Chainguard Containers with few-to-zero
vulnerabilities.&lt;/p&gt;</description></item><item><title>Getting Started with the MariaDB Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/mariadb/</link><pubDate>Fri, 28 Jul 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/mariadb/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s MariaDB container image provides a security-hardened foundation for database workloads with significantly fewer vulnerabilities than traditional MariaDB images. Built on Wolfi with a distroless design, this container removes unnecessary components while maintaining full MariaDB functionality.&lt;/p&gt;
&lt;p&gt;Through daily rebuilds with the latest patches and minimal dependencies, Chainguard&amp;rsquo;s MariaDB image dramatically reduces your database&amp;rsquo;s attack surface. This enables you to run production MariaDB databases with enhanced security posture and a smaller container footprint.&lt;/p&gt;</description></item><item><title>Understanding Chainguard's Container Image Categories</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-categories/</link><pubDate>Thu, 03 Apr 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-categories/</guid><description>&lt;p&gt;Chainguard Containers are a collection of curated, distroless container images designed with a focus on software supply chain security. Chainguard&amp;rsquo;s container images are designed to be slim runtimes for production environments, emphasizing security and efficiency by removing unnecessary elements. Additionally, the images are designed to be easily integrated into existing workflows, helping organizations to build better, more secure software.&lt;/p&gt;
&lt;p&gt;Within the &lt;a href="https://images.chainguard.dev/"&gt;Chainguard Containers Directory&lt;/a&gt;, Chainguard Containers are organized into five general categories (with some falling into multiple categories):&lt;/p&gt;</description></item><item><title>The Guardener</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/the-guardener/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/the-guardener/</guid><description>&lt;p&gt;The Guardener migrates your Dockerfiles to use Chainguard Containers. It uses AI to iteratively convert instructions, build images, compare results, and fix issues until the Dockerfile works as expected.&lt;/p&gt;
&lt;p&gt;You interact with it through &lt;code&gt;chainctl agent dockerfile&lt;/code&gt; commands. The AI runs server-side and scans your workspace to perform its analysis. Docker builds and file access remain local to your machine, and only the data necessary for analysis is processed.&lt;/p&gt;
&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The Guardener is in beta.&lt;/p&gt;</description></item><item><title>Use Terraform to Create an Assumable Identity for a Jenkins Pipeline</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-terraform/</link><pubDate>Sun, 07 Sep 2025 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-terraform/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity using Terraform, and then how to update a Jenkins pipeline so that it can assume the identity and interact with Chainguard resources. If you would like to follow this guide using &lt;code&gt;chainctl&lt;/code&gt;, Chainguard&amp;rsquo;s command line tool, you can review &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-chainctl/"&gt;Use chainctl to Create an Assumable Identity for a Jenkins Pipeline&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to Use Chainguard Notifications</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-chainguard-notifications/</link><pubDate>Fri, 11 Jul 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-chainguard-notifications/</guid><description>&lt;p&gt;You can use the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/images-directory/"&gt;Chainguard Console&lt;/a&gt; to configure how &lt;strong&gt;Chainguard&lt;/strong&gt; is permitted to send notifications about things like breaking changes to users in your organization. The feature includes options to allow notifications to be sent in-app to the &lt;strong&gt;Activity Center&lt;/strong&gt; on the user’s Overview page in the Chainguard Console, via Slack, and for customers who are opted in, via email.&lt;/p&gt;
&lt;p&gt;These notifications are different from &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/cloudevents/"&gt;Chainguard Events&lt;/a&gt; as Chainguard Notifications are sent by Chainguard’s customer success representatives.&lt;/p&gt;</description></item><item><title>Using wolfictl to Manage Security Advisories</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/security-advisories/managing-advisories/</link><pubDate>Mon, 05 Aug 2024 20:23:51 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/security-advisories/managing-advisories/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: This document is deprecated as of June 2025.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Chainguard operates its own &lt;a href="https://images.chainguard.dev/security/?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-working-with-images-security-advisories-managing-advisories"&gt;Security Advisories&lt;/a&gt; page to alert users about the status of vulnerabilities found in Chainguard Containers. To maintain this database, we use &lt;a href="https://github.com/wolfi-dev/wolfictl/"&gt;&lt;code&gt;wolfictl&lt;/code&gt;&lt;/a&gt;, a tool developed for working with the &lt;a href="https://github.com/wolfi-dev/"&gt;Wolfi un-distro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this guide, you will walk through using &lt;code&gt;wolfictl&lt;/code&gt; to create an advisory for a vulnerable package. You’ll also learn how to update this advisory as more information about the vulnerability is disclosed over time. To follow along, you will need to have &lt;a href="https://git-scm.com/"&gt;&lt;code&gt;git&lt;/code&gt;&lt;/a&gt; and the &lt;a href="https://go.dev/dl/"&gt;Go programming language&lt;/a&gt; installed on your machine.&lt;/p&gt;</description></item><item><title>Getting Started with the NeMo Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/nemo/</link><pubDate>Thu, 16 May 2024 08:00:00 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/nemo/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/nemo/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-getting-started-nemo"&gt;NeMo container image&lt;/a&gt; provides a security-hardened environment for NVIDIA&amp;rsquo;s &lt;a href="https://github.com/NVIDIA/NeMo"&gt;NeMo&lt;/a&gt; deep learning framework with minimal vulnerabilities compared to traditional AI/ML containers. NeMo enables building conversational AI models through module collections for Automatic Speech Recognition (ASR), Natural Language Processing (NLP), and Text-to-Speech (TTS) tasks. Built for &lt;a href="https://developer.nvidia.com/about-cuda"&gt;CUDA 12&lt;/a&gt; GPU acceleration, this lightweight container maintains full NeMo functionality while significantly reducing security risks for both training and production inference workloads.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;What is Deep Learning?&lt;/summary&gt;
&lt;p&gt;Deep learning is a subset of machine learning that leverages a flexible computational architecture, the neural network, to address a wide variety of tasks. Neural networks emulate the structure of the brain and consist of interconnected nodes (neurons) that each contain an associated weight and threshold. In concert with an activation function, these values determine whether data is propagated within the network, producing an output layer corresponding to a classification, regression, or other result.&lt;/p&gt;</description></item><item><title>How To Use incert to Create Container Images with Built-in Custom Certificates</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/incert-custom-certs/</link><pubDate>Mon, 03 Jul 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/incert-custom-certs/</guid><description>&lt;blockquote&gt;
&lt;p&gt;NOTE: If you are looking for a way to add certificates to existing Chainguard images, check out our doc on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-certs/"&gt;adding custom certificates with Custom Assembly&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In many enterprise settings, an organization will have its own certificate authority which it uses to issue certificates for its internal services. This is often for security or control reasons but could also be related to regulatory requirements.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re using a container that needs to communicate with your organization&amp;rsquo;s services and your organization has its own certificate authority, you&amp;rsquo;ll need to add a valid certificate into your container. One way to do this is to mount the certificate as a &lt;a href="https://docs.docker.com/storage/volumes/"&gt;volume&lt;/a&gt; at runtime. This works, but it means that everyone who uses the container has to go through the process of mounting the certificate.&lt;/p&gt;</description></item><item><title>Overview of Chainguard EKS Add-ons</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/eks-add-ons/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/eks-add-ons/</guid><description>&lt;p&gt;Chainguard EKS add-ons are hardened, minimal container images for the foundational software components that power Amazon Elastic Kubernetes Service (EKS) clusters. Available through &lt;a href="https://aws.amazon.com/marketplace"&gt;AWS Marketplace&lt;/a&gt;, they serve as FIPS-validated drop-in replacements for AWS default add-ons, providing zero known CVEs and FIPS 140-3 validated cryptography without requiring custom image builds or manifest overrides.&lt;/p&gt;
&lt;h2 id="what-are-eks-add-ons" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;What are EKS add-ons?&lt;/span&gt;
&lt;a href="#what-are-eks-add-ons" class="anchor" aria-label="Link to What are EKS add-ons?" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Amazon EKS add-ons are software components that provide supporting operational capabilities to Kubernetes applications — things like networking drivers, storage integrations, and observability agents that allow the cluster to interact with underlying AWS resources, but aren&amp;rsquo;t specific to any application running on it.&lt;/p&gt;</description></item><item><title>Dockerfile Converter</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/dockerfile-conversion/</link><pubDate>Tue, 18 Mar 2025 15:22:20 +0100</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/dockerfile-conversion/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://github.com/chainguard-dev/dfc"&gt;Dockerfile Converter (dfc)&lt;/a&gt; was designed to facilitate the process of porting existing Dockerfiles to use Chainguard Containers. The following platforms are currently supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alpine (&lt;code&gt;apk&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Debian / Ubuntu (&lt;code&gt;apt&lt;/code&gt;, &lt;code&gt;apt-get&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Fedora / RedHat / UBI (&lt;code&gt;yum&lt;/code&gt;, &lt;code&gt;dnf&lt;/code&gt;, &lt;code&gt;microdnf&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you prefer a fully automated approach, &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/the-guardener/"&gt;The Guardener&lt;/a&gt; is an AI-powered agent that can migrate, optimize, and validate your Dockerfiles with minimal manual intervention.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="installation" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Installation&lt;/span&gt;
&lt;a href="#installation" class="anchor" aria-label="Link to Installation" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;If you use Homebrew, you can install dfc with:&lt;/p&gt;</description></item><item><title>How Chainguard Creates Container Images with Low-to-No CVEs</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/zerocve/</link><pubDate>Fri, 31 May 2024 12:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/zerocve/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Fuw9lYX6Ne8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools-and-resources-used-in-this-video" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools and resources used in this video&lt;/span&gt;
&lt;a href="#tools-and-resources-used-in-this-video" class="anchor" aria-label="Link to Tools and resources used in this video" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/anchore/grype"&gt;Grype&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/wolfi-dev/advisories"&gt;Wolfi Security Advisories&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: In November 2024, after this article was first written, Chainguard &lt;a href="//www.chainguard.dev/unchained/changes-to-chainguard-images-developer-tier")&gt;made changes to its free tier of container images&lt;/a&gt;. In order to access the non-free container images used in this guide, you will need to be part of an organization that has access to them. For a full list of container images that will remain in Chainguard's free tier, please refer to &lt;a href="https://support.chainguard.dev/hc/en-us/articles/28452542784667-Customer-Notice-Free-Image-Tier-Changes"&gt;this support page&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Unique Tags for Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/unique-tags/</link><pubDate>Thu, 29 Feb 2024 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/unique-tags/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s Unique Tags feature provides unique timestamped tags for every container image build, addressing enterprise requirements for precise version tracking and automated deployment workflows. Many organizations rely on distinct tags to trigger automated deployments and maintain audit trails, making traditional floating tags like &amp;rsquo;latest&amp;rsquo; unsuitable for production use.&lt;/p&gt;
&lt;p&gt;To help with cases like this, Chainguard offers Unique Tags for private registries. Unique Tags are ideal for organizations that require a strict tag per release or update of their images. They benefit teams looking for precise tracking and management of container images.&lt;/p&gt;</description></item><item><title>Getting Started with the nginx Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/nginx/</link><pubDate>Mon, 09 Jan 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/nginx/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s nginx container images provide a security-hardened foundation for web server deployments with significantly fewer vulnerabilities than traditional nginx images. Available in both development (&lt;code&gt;:latest-dev&lt;/code&gt;) and production (&lt;code&gt;:latest&lt;/code&gt;) variants, these containers maintain full nginx functionality while dramatically reducing attack surface. The production variant uses a distroless approach, removing shells and package managers to enhance security for production workloads.&lt;/p&gt;
&lt;p&gt;In this tutorial, we will create a local demo website using nginx to serve static HTML content to a local port on your machine. Then we will use the nginx Chainguard Container to build and execute the demo in a lightweight containerized environment.&lt;/p&gt;</description></item><item><title>Migration best practices and checklist</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-checklist/</link><pubDate>Mon, 03 Feb 2025 10:42:57 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/migration-checklist/</guid><description>&lt;p&gt;Chainguard container images are designed to be minimal and to include special features for increased security and provenance attestation. Depending on your current base image and customizations, you may need to make some adjustments when migrating your current workloads to use Chainguard Containers. This checklist provides a high-level overview of the steps you should consider when migrating to Chainguard Containers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Download the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/migrating-to-chainguard-images.pdf"&gt;PDF version&lt;/a&gt; of this checklist &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/migrating-to-chainguard-images.pdf"&gt;here&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="important-to-know" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Important to know&lt;/span&gt;
&lt;a href="#important-to-know" class="anchor" aria-label="Link to Important to know" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Most Chainguard Containers don’t have a package manager or a shell by default. These are &lt;strong&gt;distroless&lt;/strong&gt; images intended to be used as slim runtimes for production environments.&lt;/li&gt;
&lt;li&gt;For every version of an image, a complimentary &lt;strong&gt;standard&lt;/strong&gt; image is provided with a shell and the apk package manager. These are identified by the &lt;code&gt;-dev&lt;/code&gt; suffix and can be customized.&lt;/li&gt;
&lt;li&gt;When possible, we recommend using multistage builds that combine a build stage based on a &lt;code&gt;-dev&lt;/code&gt; variant and a runtime stage based on a distroless image.&lt;/li&gt;
&lt;li&gt;Chainguard Containers typically don’t run as root, so a &lt;code&gt;USER root&lt;/code&gt; statement may be required before installing software.&lt;/li&gt;
&lt;li&gt;Chainguard Containers are based on &lt;strong&gt;apk&lt;/strong&gt;. If you’re coming from Debian or Ubuntu you’ll need to replace &lt;code&gt;apt&lt;/code&gt; commands with their &lt;code&gt;apk&lt;/code&gt; equivalents. This also applies for other distros that are not based on &lt;strong&gt;apk&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Some images may behave differently than their equivalent in other distros, due to differences in entrypoint and shell availability. Always check the image documentation for usage details.&lt;/li&gt;
&lt;li&gt;For a number of our most popular Containers, a &lt;strong&gt;full&lt;/strong&gt; variant (tagged &lt;code&gt;-full&lt;/code&gt;) maps to the upstream image to ease initial migration. It&amp;rsquo;s a useful starting point if your pipeline depends on packages from your previous image, though we recommend moving to a slimmer variant once you&amp;rsquo;ve migrated. See &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/differences-development-production/#full-container-variants"&gt;Full container variants&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="migration-checklist" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Migration checklist&lt;/span&gt;
&lt;a href="#migration-checklist" class="anchor" aria-label="Link to Migration checklist" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Check the image’s overview page on the &lt;a href="https://images.chainguard.dev"&gt;Containers Directory&lt;/a&gt; for usage details and any compatibility remarks.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Replace your current base image with a standard &lt;code&gt;-dev&lt;/code&gt; (such as &lt;code&gt;latest-dev&lt;/code&gt;) variant as a starting point.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Add a &lt;code&gt;USER root&lt;/code&gt; statement before package installations or other commands that must run as an administrative user.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Replace any instances of &lt;code&gt;apt install&lt;/code&gt; (or equivalent) with &lt;code&gt;apk add&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Use &lt;code&gt;apk search&lt;/code&gt; on a running container or the &lt;a href="https://apk.dag.dev/"&gt;APK Explorer&lt;/a&gt; tool to identify packages you need – some commands might be available with different names or bundled with different packages.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; When copying application files to the image, make sure proper permissions are set.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Switch back to a non-root user so that the image does not run as root by default.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Build and test your image to validate your setup.&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Optional: migrate your setup to a multi-stage build that uses a distroless image variant as runtime. Our &lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/about/getting-started-distroless/"&gt;Getting Started with Distroless&lt;/a&gt; guide has detailed information on how to work with distroless images and multi-stage builds.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For detailed migration guidance, please refer to our &lt;a href="https://edu.chainguard.dev/chainguard/migration/"&gt;Migration Docs&lt;/a&gt; on Chainguard Academy. For troubleshooting, check our &lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/troubleshooting/debugging-distroless-images/"&gt;Debugging distroless containers&lt;/a&gt; resource.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a CLI session authenticated with Keycloak</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/keycloak-identity/</link><pubDate>Tue, 26 Mar 2024 08:48:45 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/keycloak-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity using Terraform, and then assume the identity with the CLI to interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>Using the Chainguard Directory</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/chainguard-directory/</link><pubDate>Fri, 23 Feb 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/chainguard-directory/</guid><description>&lt;p&gt;There are hundreds of Chainguard Containers available for use. To help users explore and better understand all of these container images, we&amp;rsquo;ve developed the Chainguard Directory. This is a free to access web portal that does not require signing in from which you can view information about container images in the Chainguard catalog. This is great for quick searches or while exploring Chainguard&amp;rsquo;s offerings.&lt;/p&gt;
&lt;p&gt;If you want more specific information about what is available to your organization, take a look at the Chainguard Console. You&amp;rsquo;ll first need to &lt;a href="https://console.chainguard.dev/auth/login"&gt;create an account and log in&lt;/a&gt; but there you can interact in a clearer, organization-specific way. If you use the &lt;em&gt;Sign In&lt;/em&gt; link in the directory, it brings you to the console. Learn more about the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/images-directory/"&gt;Chainguard Console&lt;/a&gt; in the related docs page.&lt;/p&gt;</description></item><item><title>Getting Started with the Node Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/node/</link><pubDate>Wed, 01 Feb 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/node/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/node/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-getting-started-node"&gt;Node container image&lt;/a&gt; provides a secure runtime for Node.js applications with significantly fewer vulnerabilities than traditional Node images. This distroless image includes Node.js and npm while maintaining a minimal attack surface for production deployments.&lt;/p&gt;
&lt;p&gt;In this guide, we&amp;rsquo;ll set up a demo application and create a Dockerfile to build and execute the demo using the Node Chainguard Containers as base.&lt;/p&gt;
&lt;p&gt;This tutorial requires Docker, Node, and Npm to be installed on your local machine.&lt;/p&gt;</description></item><item><title>Verify that Chainguard FIPS Containers are Configured to Use FIPS Modules</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/verify-fips/</link><pubDate>Sun, 23 Nov 2025 08:04:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/verify-fips/</guid><description>&lt;p&gt;Chainguard offers hundreds of FIPS container image variants covering language runtimes (Go, Java, Python, Node.js, .NET, PHP, C/C++), databases, web servers, and Kubernetes components. These images use NIST-validated cryptographic modules including the OpenSSL FIPS provider, Bouncy Castle FIPS, and BoringCrypto. Refer to Chainguard&amp;rsquo;s &lt;a href="https://www.chainguard.dev/legal/fips-commitment"&gt;FIPS Commitment&lt;/a&gt; for a full list of the modules used in Chainguard FIPS Images, as well as their respective CMVP certificates and SBOM indicators.&lt;/p&gt;
&lt;p&gt;This guide outlines how to verify that Chainguard&amp;rsquo;s FIPS images are properly configured to use these FIPS modules.&lt;/p&gt;</description></item><item><title>How To Compare Chainguard Containers with chainctl</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainctl-usage/comparing-images/</link><pubDate>Wed, 30 Aug 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainctl-usage/comparing-images/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;code&gt;chainctl images diff&lt;/code&gt; command provides detailed comparisons between container image versions, enabling you to track security improvements, package updates, and vulnerability changes across builds. This powerful feature helps you understand exactly what changes between image versions, whether comparing daily builds, analyzing CVE remediation, or evaluating custom image updates.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainctl/"&gt;&lt;code&gt;chainctl&lt;/code&gt;&lt;/a&gt; diff functionality supports informed deployment decisions by revealing package-level differences, security posture changes, and build variations between any two Chainguard container images.&lt;/p&gt;</description></item><item><title>Getting Started with the PHP Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/php/</link><pubDate>Mon, 09 Jan 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/php/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s PHP container images provide secure foundations for PHP applications with minimal vulnerabilities compared to traditional PHP images. These images come in multiple variants: the &lt;code&gt;latest-fpm&lt;/code&gt; variant for serving web applications via FastCGI, the &lt;code&gt;latest&lt;/code&gt; variant for CLI applications, and development variants that include additional tools for building and debugging PHP workloads.&lt;/p&gt;
&lt;p&gt;In this guide, we&amp;rsquo;ll set up a demo and demonstrate how you can use Chainguard Containers to develop, build, and run PHP applications.&lt;/p&gt;</description></item><item><title>Package and Image Name Mappings</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/package-name-mappings/</link><pubDate>Thu, 23 Oct 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/package-name-mappings/</guid><description>&lt;p&gt;When migrating to Chainguard Containers, you may notice that some package and image names differ from their upstream counterparts. This guide explains why these mappings exist and provides a comprehensive reference of how Chainguard maps image and package names to our container ecosystem.&lt;/p&gt;
&lt;h2 id="why-chainguard-remaps-package-names" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Why Chainguard Remaps Package Names&lt;/span&gt;
&lt;a href="#why-chainguard-remaps-package-names" class="anchor" aria-label="Link to Why Chainguard Remaps Package Names" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Different Linux distributions often use different names for the same software. For example, Debian calls its C compiler package &lt;code&gt;build-essential&lt;/code&gt;, while Alpine calls the equivalent package &lt;code&gt;build-base&lt;/code&gt; and Fedora uses &lt;code&gt;gcc&lt;/code&gt; and related packages. Chainguard Containers standardize these names to provide consistency regardless of which distribution you&amp;rsquo;re migrating from.&lt;/p&gt;</description></item><item><title>Can anybody build Chainguard Containers themselves?</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/can-anybody-build-containers/</link><pubDate>Sat, 02 Aug 2025 16:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/can-anybody-build-containers/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5WGfroCpyn0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Interviewer&lt;/strong&gt;: But everything is open source—can anybody build the images themselves?&lt;/p&gt;</description></item><item><title>How to Use Chainguard Helm Charts</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-chainguard-helm-charts/</link><pubDate>Fri, 11 Jul 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-chainguard-helm-charts/</guid><description>&lt;p&gt;&lt;a href="https://helm.sh"&gt;Helm&lt;/a&gt; is a package manager for Kubernetes that simplifies the installation and management of applications by automating the creation of Kubernetes resources. Helm charts are reusable, versioned packages that define a collection of Kubernetes resources required to run an application or service. You use Helm to define, install, and perform upgrades to your applications on Kubernetes.&lt;/p&gt;
&lt;p&gt;For organizations looking to deploy their Chainguard container images with Helm, Chainguard provides upstream-produced Helm charts. These charts are available from the Chainguard Registry and are intended for customers who are either looking to get started with Helm or are looking for better, trusted alternatives to the public charts they may already be using.&lt;/p&gt;</description></item><item><title>Beyond Zero: Eliminating Vulnerabilities in PyTorch Container Images (PyTorch 2024)</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/beyond_zero_pytorch_2024/</link><pubDate>Sat, 07 Sep 2024 01:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/beyond_zero_pytorch_2024/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/1klynk1dxYA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Recording of &lt;a href="https://pytorch2024.sched.com/event/1fHmE/lightning-talk-beyond-zero-eliminating-vulnerabilities-in-pytorch-container-images-patrick-smyth-dan-fernandez-srishti-hegde-chainguard"&gt;Beyond Zero: Eliminating Vulnerabilities in PyTorch Container Images&lt;/a&gt; presented by Dan Fernandez, Srishti Hegde, and Patrick Smyth at &lt;a href="https://pytorch.org/blog/pytorch-conference-2024-recap/"&gt;PyTorch 2024&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="session-description" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Session Description&lt;/span&gt;
&lt;a href="#session-description" class="anchor" aria-label="Link to Session Description" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Container images are increasingly the future of production applications at scale, providing reproducibility, robustness, and transparency. As PyTorch images get deployed to production, however, security becomes a major concern. PyTorch has a large attack surface, and building secure PyTorch images can be a challenge. Currently, the official PyTorch runtime container image has 1 CVE (known vulnerabilities) rated critical and 5 CVEs rated high. Improving this situation could secure many deployments that incorporate PyTorch for cloud-based inference or training. In this fast-paced session, we took a deep dive on the official PyTorch image from a vulnerability mitigation perspective, looking hard at included packages, executables, and active CVEs. We identify low-hanging fruit for increasing security, including stripping bloat and building fresh. We also talk about the next level of security practiced in Chainguard&amp;rsquo;s PyTorch image builds, such as including SBOMs and going distroless. Finally, we consider emerging tools and approaches for analyzing AI artifacts such as models and how these systems can benefit PyTorch in production.&lt;/p&gt;</description></item><item><title>Getting Started with the PostgreSQL Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/postgres/</link><pubDate>Thu, 10 Aug 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/postgres/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s PostgreSQL container image provides a security-hardened foundation for running Postgres databases with significantly fewer vulnerabilities than traditional PostgreSQL images. Built on Wolfi with a distroless design, this container maintains full PostgreSQL functionality while dramatically reducing attack surface.&lt;/p&gt;
&lt;p&gt;Through daily rebuilds with the latest patches and minimal dependencies, Chainguard&amp;rsquo;s PostgreSQL image enhances database security posture. This enables you to run production Postgres workloads in containerized environments with both a smaller footprint and improved protection against supply chain attacks.&lt;/p&gt;</description></item><item><title>Authenticate to Chainguard's Registry</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/authenticating/</link><pubDate>Tue, 21 Mar 2023 15:10:16 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/authenticating/</guid><description>&lt;h2 id="public-container-images" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Public Container Images&lt;/span&gt;
&lt;a href="#public-container-images" class="anchor" aria-label="Link to Public Container Images" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Chainguard offers a collection of images that are publicly available, don&amp;rsquo;t require authentication, and are free to use by anyone. However, logging in with a Chainguard account and authenticating when pulling from the registry gives you access to the Chainguard Console, and provides a mechanism for Chainguard to contact you if there are any issues with images you are pulling. This may enable Chainguard to notify you of upcoming deprecations, changes in behavior, critical vulnerabilities and remediations for images you have recently pulled.&lt;/p&gt;</description></item><item><title>Chainguard Container Catalog Pricing</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/pricing/</link><pubDate>Tue, 19 Aug 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/pricing/</guid><description>&lt;p&gt;Chainguard offers Catalog Pricing for our library of secure container images, providing access to the full catalog of Chainguard Containers. Catalog Pricing enables you to add individual images from the wider Chainguard catalog to your organization&amp;rsquo;s repository using the Self-Serve Catalog Experience.&lt;/p&gt;
&lt;p&gt;This article highlights the benefits of the Catalog Pricing plan and outlines how you can provision container images through the Self-Serve Experience.&lt;/p&gt;
&lt;h2 id="catalog-pricing" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Catalog Pricing&lt;/span&gt;
&lt;a href="#catalog-pricing" class="anchor" aria-label="Link to Catalog Pricing" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The Catalog Pricing model provides a single subscription that grants unlimited access to the full catalog of container images maintained by Chainguard. This model removes the need for per-repository licensing and offers predictable monthly or annual costs. Subscriptions can include FIPS-compliant images, depending on the selected tier.&lt;/p&gt;</description></item><item><title>How to Use Chainguard iamguarded Helm Charts</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-chainguard-iamguarded-helm-charts/</link><pubDate>Fri, 11 Jul 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-chainguard-iamguarded-helm-charts/</guid><description>&lt;p&gt;&lt;a href="https://helm.sh"&gt;Helm&lt;/a&gt; is a package manager for Kubernetes that simplifies the installation and management of applications by automating the creation of Kubernetes resources. Helm charts are reusable, versioned packages that define a collection of Kubernetes resources required to run an application or service. You use Helm to define, install, and perform upgrades to your applications on Kubernetes.&lt;/p&gt;
&lt;p&gt;Chainguard offers this limited iamguarded set of Helm charts to go with a set of Chainguard-created containers labeled as iamguarded, designed specifically to support organizations migrating off of Bitnami. The iamguarded charts are forked from upstream Bitnami charts, but now configured out-of-the box for use with Chainguard’s hardened container images. These charts only receive edits necessary to make them work with Chainguard container images and retain the intended functionality of the originals they are based on. Because the iamguarded charts are forks, they may be susceptible to breaking changes introduced by the upstream. In such cases, customers should plan to transition to a community-provided alternative (or an equivalent one from Chainguard) where possible.&lt;/p&gt;</description></item><item><title>Getting Started with the Python Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/python/</link><pubDate>Tue, 28 Feb 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/python/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s Python container images provide a more secure foundation for Python applications through distroless design, containing significantly fewer CVEs compared to traditional Python images. These production-ready images are optimized for building and running Python workloads.&lt;/p&gt;
&lt;p&gt;Two variants of Chainguard Python images are available: a minimal runtime image containing only Python and its standard library, and a &lt;code&gt;-dev&lt;/code&gt; variant that includes pip and a shell for development purposes. Since most Python applications require third-party packages, the recommended approach is using a &lt;a href="https://docs.docker.com/build/building/multi-stage/"&gt;multi-stage Docker build&lt;/a&gt; with the &lt;code&gt;-dev&lt;/code&gt; image for dependency installation and the minimal image for runtime.&lt;/p&gt;</description></item><item><title>Chainguard Catalog Starter</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/catalog-starter/</link><pubDate>Mon, 09 Mar 2026 07:52:00 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/catalog-starter/</guid><description>&lt;p&gt;Chainguard Catalog Starter is a way to try production-grade Chainguard Containers for free, without committing to a full subscription. It lets you choose a set of five container images from the broader Chainguard catalog so you can validate security, performance, and operational fit in your own environment before you buy.&lt;/p&gt;
&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Chainguard Catalog Starter is in beta.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/p&gt;
&lt;h2 id="what-is-catalog-starter" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;What is Catalog Starter?&lt;/span&gt;
&lt;a href="#what-is-catalog-starter" class="anchor" aria-label="Link to What is Catalog Starter?" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;With Chainguard Catalog Starter, users can choose any five non-FIPS images from our catalog of secure-by-default containers. Any Helm charts that depend on those images are included and count toward the five-image limit.&lt;/p&gt;</description></item><item><title>Proxy and cache Helm Charts with Artifactory</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/proxy-and-cache/</link><pubDate>Mon, 14 Jul 2025 08:10:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/proxy-and-cache/</guid><description>&lt;p&gt;This page shows you how to set up and use Chainguard Helm Charts with Artifactory via remote Helm OCI repositories.&lt;/p&gt;
&lt;h2 id="create-and-configure-helm-oci-repository-in-artifactory" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Create and configure Helm OCI repository in Artifactory&lt;/span&gt;
&lt;a href="#create-and-configure-helm-oci-repository-in-artifactory" class="anchor" aria-label="Link to Create and configure Helm OCI repository in Artifactory" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;From the administration panel within Artifactory, create a remote repository, picking Helm as the repo type. we&amp;rsquo;ll call it &lt;code&gt;iamguarded-charts&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Chainguard FIPS Container FAQs</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/faqs/</link><pubDate>Fri, 10 Jan 2025 15:56:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/fips/faqs/</guid><description>&lt;p&gt;Answers to your questions about Chainguard FIPS container images.&lt;/p&gt;
&lt;h2 id="is-there-a-way-to-enable-or-disable-the-fips-mode-in-a-fips-image" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Is there a way to enable or disable the FIPS mode in a FIPS image?&lt;/span&gt;
&lt;a href="#is-there-a-way-to-enable-or-disable-the-fips-mode-in-a-fips-image" class="anchor" aria-label="Link to Is there a way to enable or disable the FIPS mode in a FIPS image?" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;All Chainguard FIPS Containers are configured in approved-only mode as noted in our &lt;a href="https://www.chainguard.dev/legal/fips-commitment"&gt;FIPS commitment&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Getting Started with the PyTorch Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/pytorch/</link><pubDate>Thu, 25 Apr 2024 08:00:00 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/pytorch/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/pytorch/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-getting-started-pytorch"&gt;PyTorch container image&lt;/a&gt; provides a security-hardened foundation for deep learning workloads with significantly fewer vulnerabilities than traditional PyTorch containers. Built with &lt;a href="https://pytorch.org/"&gt;PyTorch&lt;/a&gt; and &lt;a href="https://developer.nvidia.com/about-cuda"&gt;CUDA&lt;/a&gt; support for GPU acceleration, this minimal image maintains full deep learning capabilities while dramatically reducing attack surface. This guide demonstrates fine-tuning models, secure inference deployment, and compares the enhanced security posture to official PyTorch images.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;What is Deep Learning?&lt;/summary&gt;
&lt;p&gt;Deep learning is a subset of machine learning that leverages a flexible computational architecture, the neural network, to address a wide variety of tasks. Neural networks emulate the structure of the brain and consist of interconnected nodes (neurons) that each contain an associated weight and threshold. In concert with an activation function, these values determine whether data is propagated within the network, producing an output layer corresponding to a classification, regression, or other result.&lt;/p&gt;</description></item><item><title>Chainguard Containers FAQs</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/faq/</link><pubDate>Thu, 01 Sep 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/faq/</guid><description>&lt;p&gt;Learn answers to your questions about &lt;a href="https://www.chainguard.dev/chainguard-images?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement"&gt;Chainguard Containers&lt;/a&gt;. Chainguard provides container images designed with security as the primary focus, featuring zero known CVEs, minimal attack surface, and built-in SBOMs for every image.&lt;/p&gt;
&lt;h2 id="which-linux-distribution-is-used-as-base-for-chainguard-containers" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Which Linux distribution is used as base for Chainguard Containers?&lt;/span&gt;
&lt;a href="#which-linux-distribution-is-used-as-base-for-chainguard-containers" class="anchor" aria-label="Link to Which Linux distribution is used as base for Chainguard Containers?" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Chainguard Containers are based on &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/wolfi/"&gt;Wolfi&lt;/a&gt;, a Linux &lt;em&gt;undistro&lt;/em&gt; we built specifically to address software supply chain security issues. We call it an undistro because it doesn&amp;rsquo;t contain certain software you&amp;rsquo;d normally find in a traditional Linux distribution such as Debian or Alpine. Wolfi is a minimal Linux distribution designed specifically to be used as a base for stripped-down container images.&lt;/p&gt;</description></item><item><title>Getting Started with the MinIO Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/minio/</link><pubDate>Mon, 27 Oct 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/minio/</guid><description>&lt;p&gt;MinIO is a high-performance, S3-compatible object storage system that has become widely adopted across the cloud-native ecosystem, with over 1 billion pulls on Docker Hub. It&amp;rsquo;s used for testing, local development, and production deployments across on-premises and cloud environments. MinIO&amp;rsquo;s solid S3 compatibility has made it a common choice for developers who need S3-compatible storage without AWS dependencies, and it&amp;rsquo;s integrated into popular open source projects like Trino and Apache Spark for backup and archival, AI/ML workloads, data lakes, and application data storage.&lt;/p&gt;</description></item><item><title>Getting Started with the Ruby Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/ruby/</link><pubDate>Wed, 10 May 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/ruby/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/ruby/versions?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-getting-started-ruby"&gt;Ruby container images&lt;/a&gt; provide secure foundations for Ruby applications with minimal vulnerabilities through both development and production-ready distroless variants. These images significantly reduce attack surface compared to traditional Ruby base images while maintaining full compatibility with Ruby applications and the Rubygems ecosystem.&lt;/p&gt;
&lt;p&gt;Because Ruby applications typically require the installation of third-party dependencies via &lt;a href="https://rubygems.org/"&gt;Rubygems&lt;/a&gt;, using a pure distroless image for building your application would not work. In cases like this, you&amp;rsquo;ll need to implement a &lt;a href="https://docs.docker.com/build/building/multi-stage/"&gt;multi-stage Docker build&lt;/a&gt; that uses one of the &lt;code&gt;-dev&lt;/code&gt; images to set up the application.&lt;/p&gt;</description></item><item><title>Getting started with the Chainguard Spark FIPS container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/spark-fips/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/spark-fips/</guid><description>&lt;p&gt;Apache Spark is a distributed computing engine for batch processing, stream processing, and machine learning at scale. Organizations subject to federal compliance requirements—including FedRAMP, FISMA, and Department of Defense frameworks—must use FIPS 140-3 validated cryptography for all cryptographic operations in Spark.&lt;/p&gt;
&lt;p&gt;Chainguard&amp;rsquo;s Spark FIPS container packages Apache Spark with the Bouncy Castle FIPS cryptographic provider, replacing the standard JVM cryptographic modules with NIST-validated equivalents. In FIPS mode, TLS connections require BCFKS-format keystores rather than the standard PKCS12 or JKS formats, and only FIPS-approved cipher suites are permitted.&lt;/p&gt;</description></item><item><title>How to Use Chainguard Containers with OpenShift</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-with-openshift/</link><pubDate>Tue, 17 Jun 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/use-with-openshift/</guid><description>&lt;p&gt;Chainguard Containers are fully compatible with Red Hat OpenShift Container Platform, providing enhanced security while requiring some configuration adjustments for OpenShift&amp;rsquo;s security context constraints. This guide explains how to successfully deploy Chainguard&amp;rsquo;s minimal, security-hardened container images in OpenShift environments.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.redhat.com/en/technologies/cloud-computing/openshift"&gt;Red Hat OpenShift&lt;/a&gt; is an application platform that orchestrates and manages your systems and resources. While it is based on open source software like Kubernetes, OpenShift includes a suite of applications with additional functionality that are configured to work together.&lt;/p&gt;</description></item><item><title>Getting Started with the WordPress Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/wordpress/</link><pubDate>Fri, 19 Jul 2024 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/wordpress/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://images.chainguard.dev/directory/image/wordpress/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-getting-started-wordpress"&gt;WordPress container image&lt;/a&gt; is a drop-in replacement for the official &lt;a href="https://hub.docker.com/_/wordpress"&gt;WordPress FPM-Alpine image&lt;/a&gt;, with significantly fewer vulnerabilities than the standard image. It includes a &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started-distroless/"&gt;distroless&lt;/a&gt; variant for production use that removes shells, package managers, and other unnecessary components. The image ships with the latest PHP and WordPress versions and all required PHP extensions.&lt;/p&gt;
&lt;p&gt;This guide covers three ways to use the WordPress Chainguard Container to build and run WordPress projects.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;What is distroless?&lt;/summary&gt;
Distroless container images are minimal container images containing only essential software required to build or execute an application. That means no package manager, no shell, and no bloat from software that only makes sense on bare metal servers.&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;What is Wolfi?&lt;/summary&gt;
&lt;a href="https://github.com/wolfi-dev/"&gt;Wolfi&lt;/a&gt; is a community Linux undistro created specifically for containers. This brings distroless to a new level, including additional features targeted at securing the software supply chain of your application environment: comprehensive SBOMs, signatures, daily updates, and timely CVE fixes.&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;What are multi-stage builds?&lt;/summary&gt;
&lt;p&gt;&lt;a href="https://docs.docker.com/build/building/multi-stage/"&gt;Multi-stage builds&lt;/a&gt; are a Docker feature that allow you to use multiple &lt;code&gt;FROM&lt;/code&gt; statements in a single Dockerfile, where each statement begins a new build stage. In a typical pattern, an early stage uses a full-featured builder image to compile code or generate artifacts, while a later stage uses a minimal runtime image and copies in only what's needed to run the application. Only what you explicitly copy from one stage carries forward — everything else is discarded when that stage completes.&lt;/p&gt;</description></item><item><title>Shipping Safer Container Runtimes in 2026</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202512/</link><pubDate>Wed, 17 Dec 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202512/</guid><description>&lt;p&gt;The December 2025 Learning Lab with Erika Heidi focuses on strategies to improve the security of your software supply chain and ship safer container runtimes in 2026.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/z5SNwBC4T-Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q"&gt;00:00&lt;/a&gt; Intro&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=172s"&gt;02:52&lt;/a&gt; Why Devs need to care&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=288s"&gt;04:48&lt;/a&gt; XZ Utils incident&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=583s"&gt;09:43&lt;/a&gt; tj-actions/changed-files incident&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=762s"&gt;12:42&lt;/a&gt; Sha1-Hulud Second Coming&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=1031s"&gt;17:11&lt;/a&gt; Trending threat models&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=1962s"&gt;32:42&lt;/a&gt; Mitigating risks&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=2702s"&gt;45:02&lt;/a&gt; Concrete Dev actions this sprint&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=z5SNwBC4T-Q&amp;amp;t=3047s"&gt;50:47&lt;/a&gt; Chainguard Containers: CVE Comparisons&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/learning-lab-202512.pdf"&gt;Slide deck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/overview/"&gt;Chainguard Containers Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/libraries/overview/"&gt;Chainguard Libraries Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/migration/migrations-overview/"&gt;Migrating to Chainguard Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/how-to-use/container-image-digests/"&gt;How to Use Container Image Digests to Improve Reproducibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/staying-secure/updating-images/digestabot/"&gt;Keep your Chainguard Containers Up to Date with digestabot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edu.chainguard.dev/chainguard/chainguard-images/staying-secure/updating-images/renovate/"&gt;Using Renovate with Chainguard Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://images.chainguard.dev/"&gt;Images Directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Static Chainguard Container Images</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202509/</link><pubDate>Sun, 28 Sep 2025 21:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202509/</guid><description>&lt;p&gt;The September 2025 Learning Lab, led by Adrian Moat, focuses on minimizing the
attack surface of container images by adopting Chainguard&amp;rsquo;s static and minimal
images, which boast zero known CVEs. Adrian demonstrated a container build for a
Go-based application and explains more complex use cases.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4Cjy_iBNr3I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;"&gt;00:01&lt;/a&gt; Welcome and introductions&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=214"&gt;03:34&lt;/a&gt; Talk outline and prerequisites&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=274"&gt;04:34&lt;/a&gt; Understanding CVEs&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=454"&gt;07:34&lt;/a&gt; Introducing Chainguard Containers&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=538"&gt;08:58&lt;/a&gt; Vulnerability and size comparison&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=614"&gt;10:14&lt;/a&gt; Why Chainguard images are more secure&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=706"&gt;11:46&lt;/a&gt; Practical demo: Migrating a Go container image&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=901"&gt;15:01&lt;/a&gt; Initial build&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1079"&gt;17:59&lt;/a&gt; Migration to Chainguard base image&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1245"&gt;20:45&lt;/a&gt; Multi-stage build and static image optimization&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1659"&gt;27:39&lt;/a&gt; Static vs. dynamic binaries&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1816"&gt;30:16&lt;/a&gt; Chainguard Container variants&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=1954"&gt;32:34&lt;/a&gt; Distroless Containers and dev images&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2010"&gt;33:30&lt;/a&gt; Debugging Distroless containers demonstration&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2697"&gt;44:57&lt;/a&gt; Key takeaways and wrap-up&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2804"&gt;46:44&lt;/a&gt; Next Learning Lab announcement&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4Cjy_iBNr3I&amp;amp;t=2870"&gt;47:50&lt;/a&gt; Resources for further learning&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/downloads/learning-lab-static-images-202509.pdf"&gt;Slide deck&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Getting Started with Chainguard's Dockerfile Converter</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202508/</link><pubDate>Thu, 28 Aug 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202508/</guid><description>&lt;p&gt;The August 2025 Learning Lab with Erika Heidi covers &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/migration/dockerfile-conversion/"&gt;DFC&lt;/a&gt;, or Dockerfile Converter, an open source tool created by the Chainguard team to facilitate migration to Chainguard Containers. In this session, learn how to install and use DFC to effectively convert your Dockerfiles to use minimal container images from Chainguard. Erika demonstrates how to use various flags to customize DFC&amp;rsquo;s output and also how to connect the DFC MCP server to your AI assistant to have DFC functionality integrated within your current AI workflow.&lt;/p&gt;</description></item><item><title>AI with Hardened Container Images</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202507/</link><pubDate>Thu, 24 Jul 2025 17:00:00 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/software-security/learning-labs/ll202507/</guid><description>&lt;p&gt;The July 2025 Learning Lab with Patrick Smyth covers AI with Hardened Container Images. In this session, learn how to secure AI workloads by reducing vulnerabilities in container images by over 90%. Patrick demonstrates hands-on techniques for training an animal detection model using PyTorch with hardened container images, creating minimal and secure deployments, and running AI frameworks with zero CVEs.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/JGSc6BwjbRI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="sections" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Sections&lt;/span&gt;
&lt;a href="#sections" class="anchor" aria-label="Link to Sections" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI"&gt;0:00&lt;/a&gt; Introduction and updates&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=122s"&gt;2:02&lt;/a&gt; Preparation: Docker pull instructions for demo&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=219s"&gt;3:39&lt;/a&gt; Chainguard! Who are we?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=274s"&gt;4:34&lt;/a&gt; CVE system fundamentals&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=408s"&gt;6:48&lt;/a&gt; &amp;ldquo;Boss assigned me to fix Ubuntu&amp;rdquo; problem&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=461s"&gt;7:41&lt;/a&gt; Introduction to Chainguard Containers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=534s"&gt;8:54&lt;/a&gt; Zero CVE containers: Real results and comparisons&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=670s"&gt;11:10&lt;/a&gt; How we achieve zero CVEs: Minimal, Fresh, Advisory, Patch&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=804s"&gt;13:24&lt;/a&gt; AI container challenges: Size and complexity&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=899s"&gt;14:59&lt;/a&gt; PyTorch container analysis: CVEs, packages, and executables&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=981s"&gt;16:21&lt;/a&gt; Demo introduction: Image classification with PyTorch&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1079s"&gt;17:59&lt;/a&gt; Demo walkthrough and repository overview&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1168s"&gt;19:28&lt;/a&gt; Demo: Running the training command&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1321s"&gt;22:01&lt;/a&gt; Demo: Downloading test image and running inference&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1400s"&gt;23:20&lt;/a&gt; Recent developments in Chainguard AI containers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1509s"&gt;25:09&lt;/a&gt; Other AI containers: TensorFlow, KServe, Triton backends&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=1606s"&gt;26:46&lt;/a&gt; Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JGSc6BwjbRI&amp;amp;t=2118s"&gt;35:18&lt;/a&gt; Chainguard AI course and additional resources&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="demo" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Demo&lt;/span&gt;
&lt;a href="#demo" class="anchor" aria-label="Link to Demo" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;In the demo, Patrick trains and runs inference on an image classification model using PyTorch and Chainguard&amp;rsquo;s hardened container image. The model classifies images of octopuses, whales, and penguins, demonstrating how to work with AI workloads securely.&lt;/p&gt;</description></item><item><title>Setting Up a Minecraft Server with the JRE Chainguard Container</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/jre-minecraft/</link><pubDate>Wed, 26 Mar 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/getting-started/jre-minecraft/</guid><description>&lt;h2 id="introduction" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Introduction&lt;/span&gt;
&lt;a href="#introduction" class="anchor" aria-label="Link to Introduction" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Chainguard&amp;rsquo;s JRE container image provides an ideal foundation for running Minecraft Java servers with enhanced security and minimal vulnerabilities. Minecraft, the &lt;a href="https://en.wikipedia.org/wiki/List_of_best-selling_video_games"&gt;best-selling video game of all time&lt;/a&gt; with 170 million monthly players as of 2024, often requires dedicated servers for multiplayer gameplay where players can build and explore together.&lt;/p&gt;</description></item><item><title>Using Chainguard Containers in Dev Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/dev-containers/</link><pubDate>Mon, 10 Mar 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/dev-containers/</guid><description>&lt;p&gt;&lt;a href="https://containers.dev/"&gt;Development Containers&lt;/a&gt; — sometimes known as &amp;ldquo;dev containers&amp;rdquo; — allow you to use a container as a development environment where you can run applications and separate tools, libraries, or runtimes. Dev containers can also help with testing and continuous integration.&lt;/p&gt;
&lt;p&gt;With a few changes, the images based on Wolfi and maintained by Chainguard provide distroless images that can be used as dev containers. This guide outlines how you can set up a Chainguard image as a dev container in VS Code.&lt;/p&gt;</description></item><item><title>Using Grype to Scan Software Artifacts</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/working-with-scanners/grype-tutorial/</link><pubDate>Thu, 06 Jun 2024 20:00:00 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/staying-secure/working-with-scanners/grype-tutorial/</guid><description>&lt;p&gt;&lt;a href="https://github.com/anchore/grype"&gt;Grype&lt;/a&gt; is a vulnerability scanner for container images and filesystems developed and maintained by &lt;a href="https://anchore.com/"&gt;Anchore&lt;/a&gt; and written in the Go programming language. Grype can scan from Docker, OCI, Singularity, podman, image archives, and local directory. Grype is compatible with SBOMs generated by &lt;a href="https://github.com/anchore/syft"&gt;Syft&lt;/a&gt;, and Grype&amp;rsquo;s &lt;a href="https://github.com/anchore/grype-db"&gt;vulnerability database&lt;/a&gt; draws from a wide variety of sources.&lt;/p&gt;
&lt;p&gt;Grype is appropriate for one-off detection for manual CVE mitigation and in automated use in CI pipelines. Chainguard maintains a &lt;a href="https://images.chainguard.dev/directory/image/grype/overview?utm_source=cg-academy&amp;amp;utm_medium=referral&amp;amp;utm_campaign=dev-enablement&amp;amp;utm_content=edu-content-chainguard-chainguard-images-working-with-images-scanners-grype-tutorial"&gt;low-to-no CVE Chainguard Image for Grype&lt;/a&gt; based on our lightweight Wolfi distribution.&lt;/p&gt;</description></item><item><title>Using Init Containers with Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/init-containers/</link><pubDate>Mon, 04 Aug 2025 15:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/init-containers/</guid><description>&lt;p&gt;Chainguard Containers are designed with minimalism and security in mind. By including fewer packages and tools, Chainguard Containers have a smaller attack surface than their counterparts. However, there are cases where the external counterparts have certain desirable features, like useful startup scripts or configuration defaults.&lt;/p&gt;
&lt;p&gt;There are several ways to customize Chainguard Containers. For example, you can use &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; to add packages to an otherwise minimal Chainguard container image. Changing a Chainguard container image&amp;rsquo;s configuration — such as updating its entrypoint or adding startup scripts — requires a different strategy. One method for doing so in Kubernetes deployments is to use &lt;em&gt;init containers&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Using the Chainguard Static Base Container Image</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/static-base-image/</link><pubDate>Wed, 30 Aug 2023 15:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/static-base-image/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZT6177U0fUM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools-used-in-this-video" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools used in this video&lt;/span&gt;
&lt;a href="#tools-used-in-this-video" class="anchor" aria-label="Link to Tools used in this video" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docker.com"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anchore/grype"&gt;Grype&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dockerfile" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Dockerfile&lt;/span&gt;
&lt;a href="#dockerfile" class="anchor" aria-label="Link to Dockerfile" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;pre class="highlight" data-language="Dockerfile"&gt;&lt;code class="language-Dockerfile" data-lang="Dockerfile"&gt;FROM cgr.dev/chainguard/go AS build
COPY main.go /main.go
RUN CGO_ENABLED=0 go build -o /hello /main.go
FROM cgr.dev/chainguard/static
COPY --from=build /hello /usr/local/bin/
CMD [&amp;#34;hello&amp;#34;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;So what&amp;rsquo;s the best container base image to use?&lt;/p&gt;</description></item><item><title>How to Use Container Image Digests to Improve Reproducibility</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/container-image-digests/</link><pubDate>Mon, 07 Aug 2023 15:21:01 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/container-image-digests/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xYlLfjgG64E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools-used-in-this-video" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools used in this video&lt;/span&gt;
&lt;a href="#tools-used-in-this-video" class="anchor" aria-label="Link to Tools used in this video" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docker.io"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/go-containerregistry/tree/main/cmd/crane"&gt;Crane&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="commands-used" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Commands used&lt;/span&gt;
&lt;a href="#commands-used" class="anchor" aria-label="Link to Commands used" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;pre class="highlight" data-language="sh"&gt;&lt;code class="language-sh" data-lang="sh"&gt;docker pull cgr.dev/chainguard/node&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight" data-language="sh"&gt;&lt;code class="language-sh" data-lang="sh"&gt;docker manifest inspect cgr.dev/chainguard/node@sha256:ede7ef4ca485553f5313f7a02ad3537db1fe337079fc7cfb879f44cf709326db&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight" data-language="sh"&gt;&lt;code class="language-sh" data-lang="sh"&gt;crane digest --full-ref cgr.dev/chainguard/node&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight" data-language="sh"&gt;&lt;code class="language-sh" data-lang="sh"&gt;docker pull cgr.dev/chainguard/node:latest@sha256:ede7ef4ca485553f5313f7a02ad3537db1fe337079fc7cfb879f44cf709326db&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="dockerfile" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Dockerfile&lt;/span&gt;
&lt;a href="#dockerfile" class="anchor" aria-label="Link to Dockerfile" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;pre class="highlight" data-language="dockerfile"&gt;&lt;code class="language-dockerfile" data-lang="dockerfile"&gt;FROM cgr.dev/chainguard/go:latest@sha256:7e60584b9ae1eec6ddc6bc72161f4712bcca066d5b1f511d740bcc0f65b05949 AS build
WORKDIR /src
RUN CGO_ENABLED=0 go build -o /bin/server ./src
FROM cgr.dev/chainguard/static AS prod
COPY --from=build /bin/server /bin/
EXPOSE 8000
ENTRYPOINT [ &amp;#34;/bin/server&amp;#34; ]&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;a href="https://youtu.be/xYlLfjgG64E?t=5" target="_blank"&gt;0:05&lt;/a&gt; You might have heard the advice to pin to a digest when using container images.&lt;/p&gt;</description></item><item><title>Reproducible Dockerfiles with Frizbee and Digestabot</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/digestabot_frizbee/</link><pubDate>Fri, 07 Jun 2024 12:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/digestabot_frizbee/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/FfZZVZ-V5ho?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools&lt;/span&gt;
&lt;a href="#tools" class="anchor" aria-label="Link to Tools" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/stacklok/frizbee"&gt;Frizbee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chainguard-dev/digestabot"&gt;Digestabot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;d like to talk about a problem I faced with container builds in the past and a potential solution.&lt;/p&gt;</description></item><item><title>Getting Software Versions from Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/version-info-chainguard-images/</link><pubDate>Fri, 07 Jul 2023 15:21:01 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/version-info-chainguard-images/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/K60-jhVf2I4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools-used-in-this-video" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools used in this video&lt;/span&gt;
&lt;a href="#tools-used-in-this-video" class="anchor" aria-label="Link to Tools used in this video" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docker.com"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sigstore/cosign"&gt;Cosign&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="commands-used" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Commands used&lt;/span&gt;
&lt;a href="#commands-used" class="anchor" aria-label="Link to Commands used" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;pre class="highlight" data-language="sh"&gt;&lt;code class="language-sh" data-lang="sh"&gt;cosign download attestation --platform=linux/amd64 \
--predicate-type=https://spdx.dev/Document \
cgr.dev/chainguard/python:latest | jq -r .payload | base64 -d \
| jq -r &amp;#39;.predicate.packages[] | &amp;#34;\(.name) \(.versionInfo)&amp;#34;&amp;#39;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight" data-language="sh"&gt;&lt;code class="language-sh" data-lang="sh"&gt;docker run cgr.dev/chainguard/wolfi-base ls /var/lib/db/sbom&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hi, I want to record a very short video on how to get software version information out of Chainguard
Containers.&lt;/p&gt;</description></item><item><title>Building Minimal Container Images for Applications with Runtimes</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/minimal-runtime-images/</link><pubDate>Wed, 06 Sep 2023 01:21:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/minimal-runtime-images/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/P7pmV-s5ZYY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="tools-used-in-this-video" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Tools used in this video&lt;/span&gt;
&lt;a href="#tools-used-in-this-video" class="anchor" aria-label="Link to Tools used in this video" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docker.com"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Resources&lt;/span&gt;
&lt;a href="#resources" class="anchor" aria-label="Link to Resources" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The Dockerfiles used in this video and other supporting documentation are &lt;a href="https://github.com/chainguard-dev/minimal_images_for_language_runtimes"&gt;available on GitHub&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Choosing a Container for your Compiled Programs</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-compiled-programs/compiled-programs/</link><pubDate>Fri, 12 Jul 2024 17:55:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-compiled-programs/compiled-programs/</guid><description>&lt;p&gt;When selecting the right base image for your application, there are a variety of factors to take into consideration. For starters, it is critical that your application has all of the dependencies it needs to run. The ideal base image will contain the essential packages you need, while leaving out the ones you don’t. However, in practice, you will need to build upon your container images so they meet your specific needs, making it all the more important that you have a strong foundation.&lt;/p&gt;</description></item><item><title>glibc vs. musl</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-compiled-programs/glibc-vs-musl/</link><pubDate>Mon, 26 Aug 2024 18:42:57 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/images-compiled-programs/glibc-vs-musl/</guid><description>&lt;p&gt;Over the years, various implementations of the &lt;a href="https://en.wikipedia.org/wiki/C_standard_library"&gt;C standard library&lt;/a&gt; — such as the &lt;a href="https://www.gnu.org/software/libc/"&gt;GNU C library&lt;/a&gt;, &lt;a href="https://musl.libc.org/about.html"&gt;musl&lt;/a&gt;, &lt;a href="https://www.uclibc-ng.org/"&gt;uClibc-ng&lt;/a&gt;, and many others — have emerged with different goals and characteristics. These various implementations exist because the C standard library defines the required functionality for operating system services (such as file input/output and memory management) but does not specify implementation details. Among these implementations, the GNU C Library (&lt;a href="https://www.gnu.org/software/libc/"&gt;glibc&lt;/a&gt;) and &lt;a href="https://musl.libc.org/about.html"&gt;musl&lt;/a&gt; are among the most popular.&lt;/p&gt;</description></item><item><title>Vulnerability Comparison: bash</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/bash/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/bash/</guid><description/></item><item><title>Vulnerability Comparison: busybox</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/busybox/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/busybox/</guid><description/></item><item><title>Vulnerability Comparison: curl</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/curl/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/curl/</guid><description/></item><item><title>Vulnerability Comparison: deno</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/deno/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/deno/</guid><description/></item><item><title>Vulnerability Comparison: dex</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/dex/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/dex/</guid><description/></item><item><title>Vulnerability Comparison: dotnet-runtime</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/dotnet-runtime/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/dotnet-runtime/</guid><description/></item><item><title>Vulnerability Comparison: dotnet-sdk</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/dotnet-sdk/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/dotnet-sdk/</guid><description/></item><item><title>Vulnerability Comparison: etcd</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/etcd/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/etcd/</guid><description/></item><item><title>Vulnerability Comparison: git</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/git/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/git/</guid><description/></item><item><title>Vulnerability Comparison: go</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/go/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/go/</guid><description/></item><item><title>Vulnerability Comparison: gradle</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/gradle/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/gradle/</guid><description/></item><item><title>Vulnerability Comparison: haproxy</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/haproxy/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/haproxy/</guid><description/></item><item><title>Vulnerability Comparison: jenkins</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/jenkins/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/jenkins/</guid><description/></item><item><title>Vulnerability Comparison: kube-state-metrics</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/kube-state-metrics/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/kube-state-metrics/</guid><description/></item><item><title>Vulnerability Comparison: mariadb</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/mariadb/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/mariadb/</guid><description/></item><item><title>Vulnerability Comparison: maven</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/maven/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/maven/</guid><description/></item><item><title>Vulnerability Comparison: memcached</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/memcached/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/memcached/</guid><description/></item><item><title>Vulnerability Comparison: minio</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/minio/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/minio/</guid><description/></item><item><title>Vulnerability Comparison: minio-client</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/minio-client/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/minio-client/</guid><description/></item><item><title>Vulnerability Comparison: nats</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/nats/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/nats/</guid><description/></item><item><title>Vulnerability Comparison: nginx</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/nginx/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/nginx/</guid><description/></item><item><title>Vulnerability Comparison: node</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/node/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/node/</guid><description/></item><item><title>Vulnerability Comparison: opensearch</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/opensearch/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/opensearch/</guid><description/></item><item><title>Vulnerability Comparison: php</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/php/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/php/</guid><description/></item><item><title>Vulnerability Comparison: postgres</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/postgres/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/postgres/</guid><description/></item><item><title>Vulnerability Comparison: python</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/python/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/python/</guid><description/></item><item><title>Vulnerability Comparison: r-base</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/r-base/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/r-base/</guid><description/></item><item><title>Vulnerability Comparison: rabbitmq</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/rabbitmq/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/rabbitmq/</guid><description/></item><item><title>Vulnerability Comparison: redis</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/redis/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/redis/</guid><description/></item><item><title>Vulnerability Comparison: ruby</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/ruby/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/ruby/</guid><description/></item><item><title>Vulnerability Comparison: rust</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/rust/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/rust/</guid><description/></item><item><title>Vulnerability Comparison: telegraf</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/telegraf/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/telegraf/</guid><description/></item><item><title>Vulnerability Comparison: traefik</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/traefik/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/traefik/</guid><description/></item><item><title>Vulnerability Comparison: wait-for-it</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/wait-for-it/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/wait-for-it/</guid><description/></item><item><title>Vulnerability Comparison: wolfi-base</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/wolfi-base/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/wolfi-base/</guid><description/></item><item><title>Vulnerability Comparison: zookeeper</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/zookeeper/</link><pubDate>Tue, 01 Nov 2022 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/vuln-comparison/zookeeper/</guid><description/></item><item><title>Package Version Selection</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/wolfi/apk-version-selection/</link><pubDate>Mon, 06 Nov 2023 08:49:31 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/wolfi/apk-version-selection/</guid><description>&lt;p&gt;This document explains how to specify version constraints for packages installed with the apk tool, as well as apko and melange. Understanding version selection will enable you to choose the version you&amp;rsquo;re looking for, determine what updates and vulnerability fixes you receive, and can allow you to reproduce an image&amp;rsquo;s digest through exact version matching.&lt;/p&gt;
&lt;h2 id="version-selection-in-apko-and-melange" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Version selection in apko and melange&lt;/span&gt;
&lt;a href="#version-selection-in-apko-and-melange" class="anchor" aria-label="Link to Version selection in apko and melange" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;All the examples in this document focus on usage with the &lt;code&gt;apk&lt;/code&gt; tool, but the same semantics apply to &lt;code&gt;apk add&lt;/code&gt; as well as references in an apko or melange &lt;code&gt;packages&lt;/code&gt; field:&lt;/p&gt;</description></item><item><title>Installing APK packages in distroless variants</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/install-apks-in-distroless-variants/</link><pubDate>Tue, 21 Apr 2026 00:00:01 +0000</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/install-apks-in-distroless-variants/</guid><description>&lt;p&gt;This page documents workflows for installing APK packages in &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/getting-started-distroless/"&gt;distroless variants&lt;/a&gt; of Chainguard container images, such as most builds tagged &lt;code&gt;:latest&lt;/code&gt;. We copy a filesystem from a distroless container image to a build image, install APKs to it using &lt;code&gt;chroot&lt;/code&gt;, then copy the modified filesystem back to the distroless image in the final step.&lt;/p&gt;
&lt;h2 id="overview-installing-packages-in-distroless-containers" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Overview: Installing packages in distroless containers&lt;/span&gt;
&lt;a href="#overview-installing-packages-in-distroless-containers" class="anchor" aria-label="Link to Overview: Installing packages in distroless containers" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The distroless variants of Chainguard Containers do not contain shells or package managers by design. This reduces attack surface and exploitability for these images. In cases where additional packages are required, we typically recommend the following:&lt;/p&gt;</description></item><item><title>Chainguard's Private APK Repositories</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/packages/private-apk-repos/</link><pubDate>Fri, 21 Feb 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/packages/private-apk-repos/</guid><description>&lt;p&gt;With Chainguard&amp;rsquo;s private APK repositories, you can access packages that are included within your organization&amp;rsquo;s container image entitlements. This allows you to build custom images based on components that are already part of your organization catalog.&lt;/p&gt;
&lt;p&gt;This guide provides a brief overview of Chainguard&amp;rsquo;s private APK repositories and outlines different ways you can incorporate them into your organization&amp;rsquo;s workflows.&lt;/p&gt;
&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Private APK Repositories is in beta. Available to all Chainguard Containers customers.&lt;/p&gt;</description></item><item><title>Verifying Chainguard Containers and Metadata Signatures with Cosign</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/verifying-chainguard-images-and-metadata-signatures-with-cosign/</link><pubDate>Mon, 18 Mar 2024 08:59:52 -0700</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/verifying-chainguard-images-and-metadata-signatures-with-cosign/</guid><description>&lt;p&gt;Chainguard signs all container images and their attestations (including SBOMs) to ensure supply chain security and enable verification of image authenticity. These cryptographic signatures allow you to confirm that images come from Chainguard and haven&amp;rsquo;t been tampered with, while attestations provide detailed information about image contents and build provenance.&lt;/p&gt;
&lt;p&gt;This guide outlines how you can use Cosign to download and verify container image signatures and attestations.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The following examples require &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-install-cosign/"&gt;Cosign&lt;/a&gt; and &lt;a href="https://stedolan.github.io/jq/"&gt;jq&lt;/a&gt; to be installed on your machine in order to download and verify image attestations.&lt;/p&gt;</description></item><item><title>How to Retrieve SBOMs and attestations for Chainguard Containers</title><link>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/retrieve-image-sboms/</link><pubDate>Fri, 17 Nov 2023 11:07:52 +0200</pubDate><guid>https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/retrieve-image-sboms/</guid><description>&lt;p&gt;Chainguard provides a Software Bill of Materials (SBOM) with every container image, enabling complete transparency about package contents and dependencies for security and compliance requirements. These SBOMs are cryptographically signed and attached as attestations, making them retrievable and verifiable. By including only the minimum packages needed, Chainguard Containers reduce attack surface while the SBOM ensures you can verify exactly what&amp;rsquo;s in each image.&lt;/p&gt;
&lt;p&gt;Even though they contain the minimum number of packages, there may come a time when you want to know exactly what&amp;rsquo;s running inside of a certain Chainguard Container. For this reason, Chainguard includes a signed SBOM with each image in the form of a &lt;a href="https://slsa.dev/attestation-model"&gt;software attestation&lt;/a&gt;, allowing you to verify the contents and meet compliance requirements. Chainguard publishes several different types of attestations; see the options under the &lt;a href="https://deploy-preview-3422--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/retrieve-image-sboms/#available-attestation-types"&gt;Available attestation types&lt;/a&gt; section on this page.&lt;/p&gt;</description></item></channel></rss>