How Chainguard Containers are Tested

A conceptual article outlining testing requirements for Chainguard Containers.

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.

This article provides a high-level overview of Chainguard’s approach to testing when building new container images to ensure their security and consistency with comparable container images.

Build requirements for new container images

Chainguard has a set of requirements in place that new container images must meet in order to be included in our Containers Directory. These requirements fall into two categories:

  • Container image standards
  • Application testing

Container image standards

When building a new container image, Chainguard will take steps to ensure it meets the following standards:

RequirementExplanation
SizeAny new Chainguard Containers should be smaller than their external counterparts, though exceptions may occur.
CVEsWhen scanned with a CVE scanning tool like Grype, new container images should return zero CVEs. If a container image does return CVEs in its scan results it should include an explanation, though some reported CVEs may be false positives. Refer to our Security Advisories for more information.
Kubernetes accessibilityContainers used for Kubernetes-based deployments must be able to run inside of a Kubernetes cluster.
ArchitectureChainguard Containers must be built for both the x86_64 and aarch64 architectures.

Application testing

Chainguard performs the following checks on new container images to ensure that the applications contained within them meet the needs of most use cases:

RequirementExplanation
FunctionalityThe application is tested to comply with is upstream counterpart’s core feature set.
Builder ContainersChainguard’s builder containers can in fact build new, functional container images.

Automated tests

In addition to the container image build requirements outlined previously, Chainguard also performs a number of automatic checks for new container images as part of our CI/CD process.

Depending on the container image, Chainguard peforms various representative tests, such as functional and integration tests. For example, for applications primarily deployed with a Helm chart, the container image is deployed to an ephemeral Kubernetes cluster using the accepted Helm chart, which is validated in various ways.

When applicable, Chainguard will develop functional tests for container images. These tests vary by application, but can generally be thought of as integration tests that run after a container image is built but before it gets tagged.

Our goal for these tests is that they fully evaluate the container image’s deployment in a representative environment; for example, container images running Kubernetes applications are tested in a Kubernetes cluster and builder or toolchain applications are tested with a docker run command or part of a docker build process. This means that our container images work with the existing upstream deployment methods, such as Helm charts or Kustomize manifests, helping us to ensure that a container image is as close to a drop-in replacement as possible.

Additionally, Chainguard performs automated tests on every package included in our container images. These tests run on every new build within an ephemeral container environment before the build is published. This allows us to validate the representative functionality of each package.

Learn more

Chainguard’s rigorous container image testing standards and frequent updates ensure that they will work as expected with few (and often zero) vulnerabilities. If you’re having trouble working with a specific Chainguard Container, we encourage you to check out its relevant Overview page in our Chainguard Containers Directory.

For general help with using Chainguard Containers, you can refer to our Debugging Distroless Container Images guide or our Chainguard Containers FAQs. For help with specific issues or questions not covered in these resources, please contact our support team.

Last updated: 2025-03-21 11:07