PAGES
← all tools
◆ Container & Image Security

distroless

open-source

Distroless provides container images containing only your application and its runtime dependencies, without package managers, shells, or other standard Linux distribution programs.

Summary

distroless is an open-source set of minimal container base images that strip a Linux distribution down to just an application and its runtime dependencies, leaving out package managers, shells, and other programs a standard image would carry. It is distributed as prebuilt images pulled into a Docker or Bazel build rather than installed as a CLI or library, and it targets platform and build engineers who own container pipelines and want smaller attack surfaceattack surfaceThe exposed systems, interfaces and access points an attacker could try to use. It includes internet-facing services as well as identities, software and other reachable resources. for supply-chain and CVE-scanning purposes. The smallest image runs around 2 MiB, far below comparable Alpine or Debian bases, which improves scanner signal and cuts provenanceprovenanceEvidence recording where a software artifact came from and how it was built, including its source and build process. It helps a consumer check that the artifact matches a trusted build. work to what the application actually uses. It sits in the base-image and container-supply-chain-security space alongside tooling for SBOMSBOMA software bill of materials, an inventory of the components and versions inside an application. It helps teams find affected software when a dependency has a vulnerability or licensing issue. generation and image signing, which the project supports directly. First committed in 2017, it has 173 contributors and a release 12 days ago, so it is actively maintained.

Distroless provides container images containing only your application and its runtime dependencies, without package managers, shells, or other standard Linux distribution programs.

How distroless helps

Which of my base images are dragging in packages that CVE scanners keep flagging?

the runtime layer contains only the application and its runtime dependencies, so scanners have far less surface to match against and fewer findings to triage

How much attack surface am I carrying just from the base image itself?

the smallest image is around 2 MiB, a fraction of Alpine or Debian, because shells, package managers and distribution tooling are absent from the layer entirely

Can someone who gets a shell in my container pivot using tools already installed there?

there is no shell or package manager present in the runtime image, so common post-exploitation steps that rely on those binaries have nothing to run

Will I still be able to poke around inside the container when something breaks in production?

a separate debug variant with a shell is available to enter, keeping the production image itself free of that tooling

What do I actually need to list when I establish provenance for an image?

because the image holds only the application and its runtime dependencies, the set of components to account for is limited to what the app itself needs rather than a whole distribution

Will my existing debian12-based pipelines keep building unchanged?

debian12 base image builds are removed from the project, so any pipeline still pulling that variant breaks on upgrade and needs to move to a supported base

all 6 features, with the evidence for each →

Languages

Not documented

Features

6 capabilities

Built from distroless's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • distroless covers 1 of the 5 supply chain security capabilities we track.

What distroless offers you

  • CI/CD pipeline integration1
  • JSON data export1
All capabilities 6 capabilities
Distroless container images shipped Provides minimal container images that include only application runtime dependencies, omitting package managers, shells, and standard Linux distribution programs. 4 releases · 3 other sources · first seen Oct 2026

release

  • Adds a TestBlockedRoots test in common/cacerts_test.go that validates every image archive against a blockedSPKIs denylist, covering both the PEM bundle at etc/ssl/certs/ca-certificates.crt and the Java trust store at etc/ssl/certs/java/cacerts. commits-2026-10-17 · Oct 2026 · source · release history
  • Blocks two compromised CA roots (AAA Certificate Services and 'emSign ECC Root CA - G3') from the ca-certificates.crt bundle, matched by SHA-256 SPKI hash to catch renames and re-issues.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-10-17 · Oct 2026 · source · release history
  • Requires Dart 3.9 for the dart build CLI when building distroless Dart images. commits-2026-09-10 · Oct 2026 · source · release history
  • Adds a Dart example (examples/dart/bin/hello.dart) demonstrating a distroless container built with the base-nossl image.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-09-10 · Oct 2026 · source · release history

docs

  • Minimal container images containing only application runtime dependencies, without package managers, shells, or standard Linux distribution programs.

example

  • Run built distroless app container docker run -t myapp
  • Run Node.js app exposing ports docker run -p 3000:3000 -t myexpressapp
Image diff filtering shipped Provides a diff tool that compares image targets from a query file, with explicit error reporting when a specified target filter matches nothing. 2 releases · first seen Oct 2026

Also counts toward: CI/CD pipeline integration

release

  • The --set-github-output-on-diff flag has been removed from diff.bash; GitHub Actions output is now written automatically when GITHUB_ACTIONS=true and GITHUB_OUTPUT is set. commits-2026-10-26 · Oct 2026 · source · release history
  • The diff tool exits with an explicit error when --only <target> matches no image targets in the query file, rather than silently succeeding.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-10-20 · Oct 2026 · source · release history
SBOM generation for custom packages shipped Generates SPDX JSON SBOMs for generic packages, including Node.js binary archives, using explicit metadata flags. 1 release · 1 other source · first seen Aug 2026

Shared capability: SBOM generation

Also counts toward: JSON data export

release

  • Adds package_spdx.go tool that generates per-package SPDX JSON SBOMs, accepting --package_name, --version, --purl, --sha256, --url, --id, --copyright, --generates, --homepage, --supplier, and --description flags. commits-2026-08-01 · Aug 2026 · source · release history

example

  • Generate an SPDX JSON SBOM for a generic (non-Debian) package such as a Node.js binary archive. go run private/pkg/package_spdx.go \ --package_name nodejs \ --version 22.23.2 \ --purl 'pkg:generic/nodejs@22.23.2?download_url=https://nodejs.org/' \ --sha256 <sha256-of-archive> \ --url… commits-2026-08-01 · Aug 2026 · source
Emergency image update bypass shipped Allows skipping the mandatory soak period for image updates to enable faster emergency pushes. 1 release · first seen Oct 2026

release

  • Allows skipping the mandatory 1-day soak time for image updates, enabling faster emergency pushes. commits-2026-10-17 · Oct 2026 · source · release history
Debug image with shell access shipped Offers a debug variant of distroless images that includes a shell, enabling interactive inspection of the container environment. 1 other source

example

  • Launch debug image with shell access docker run --entrypoint=sh -ti my_debug_image
Keyless image signature verification shipped Supports verifying distroless image signatures using keyless signing, allowing users to confirm image authenticity without managing long-lived keys. 1 other source

example

  • Verify distroless image keyless signature cosign verify $IMAGE_NAME --certificate-oidc-issuer https://accounts.google.com --certificate-identity keyless@distroless.iam.gserviceaccount.com

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for distroless, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail distroless puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Website history

adk.dev, every change

Google's 40 pages as they looked each month from August 2026 to October 2026: 79 renders, 1 change of tagline or palette. Step through them, play them, or put any two months side by side.

Website history is included with Researcher and Business.

See plans →

Coverage

Missing something? Tell us

What distroless connects to, runs on and detects, read from its release notes and docs. So far: 1 updated supported platform.

Show

1 change, tracked since Oct 28, 2026.

  • Oct 282026

    updated Bumping non-snapshot packages to latest stable versions

    commits-2026-10-26 Source ↗

How we count

Read from 2 of 7 release notes and docs updates we hold for distroless. "First seen" is the earliest note that names something; "last" is the latest. Our history may start partway through distroless's life, so an old integration can show a recent first-seen date.

Each change counts once: "added 40 checks" is one line, so the numbers measure how often coverage moves, not how big the catalogue is or how well it detects.

Releases

Show
Coverage in all entries

7 entries

  1. October 20264
  2. September 20262
  3. August 20261
    Show
    Coverage in all entries

    7 entries

    Project health

    Issue, contributor and maintainer activity in GoogleContainerTools/distroless, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 18 +6 vs prior 12 months
    2. Maintainers 3 +1 joined · −1 left, last 12 months
    3. Bus factor 2 committers behind half the commits
    4. Community-filed 93% of issues opened, last 12 months
    5. Median time to close 3 years first maintainer reply 9.4 hours
    6. Open backlog 8 of 677 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 8
    3. Contributors / month 3
    4. Commits / month 11
    5. Stars 23,082
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    We can only check tools that publish GitHub releases.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →