Supply-chain security

Every image you run is built on images and packages written by others. Supply-chain security is making sure that what you build and deploy is exactly what you reviewed, even if a registry, a mirror or an account is compromised.

How it works

Pin every external image by digest (FROM image:tag@sha256:..., image: ...@sha256:... in Compose), and move digests forward through reviewed changes, which tools such as Renovate or Dependabot propose. Pull only through a mirror you control, with immutable tags and a push account kept out of CI. Sign images and verify signatures at deploy time (cosign, Docker Content Trust), and keep a software bill of materials (docker buildx build --sbom=true) to know what is inside.

What breaks

Tags move: whoever can push to a repository can replace node:20-alpine with a backdoored copy that works perfectly, and docker build --pull or docker compose pull will fetch it on the next rebuild. A backdoored base image is invisible to every functional test. Pinning without a process to update digests freezes security patches instead.

In a Dockerfile

# Dockerfile
FROM registry.shop.internal/mirror/node:20-alpine@sha256:b0ff1116a2a7b674ba9d43a7b7fb5639bb9d453a13cd3fcebc9d46cd6f9f2963

# compose.yaml
#   db:
#     image: registry.shop.internal/mirror/postgres:16@sha256:3ff0cf6f859b...

See it break, then fix it

Write the Dockerfile or the compose file, type the docker commands, and watch a simulated server run them through reboots, upgrades and traffic. Free to start.