Salta ai contenuti

Chainguard Images

Immagini container minimali a zero CVE costruite su Wolfi Linux per catene di fornitura software sicure.

ComandoDescrizione
docker pull cgr.dev/chainguard/static:latestScarica immagine base statica minimale
docker pull cgr.dev/chainguard/busybox:latestScarica immagine busybox per debug
docker pull cgr.dev/chainguard/wolfi-base:latestScarica immagine base Wolfi con shell
docker pull cgr.dev/chainguard/python:latestScarica immagine runtime Python
docker pull cgr.dev/chainguard/node:latestScarica immagine runtime Node.js
docker pull cgr.dev/chainguard/go:latestScarica immagine di build Go
docker pull cgr.dev/chainguard/nginx:latestScarica immagine web server nginx
docker pull cgr.dev/chainguard/git:latestScarica immagine git minimale
docker pull cgr.dev/chainguard/jdk:latestScarica immagine Java JDK
docker pull cgr.dev/chainguard/rust:latestScarica immagine di build Rust
docker pull cgr.dev/chainguard/redis:latestScarica immagine server Redis
docker pull cgr.dev/chainguard/postgres:latestScarica immagine PostgreSQL
docker pull cgr.dev/chainguard/curl:latestScarica immagine curl minimale
ComandoDescrizione
Tag :latestBuild piu recente, pronta per la produzione
Tag :latest-devVariante di sviluppo con shell e gestore pacchetti
:latest sulle immagini -devInclude apk, shell e strumenti di debug
cgr.dev/chainguard-private/IMAGERegistro immagini privato/enterprise
Pinning del digest @sha256:abc123...Fissa a una build esatta dell’immagine per la riproducibilita
ComandoDescrizione
FROM cgr.dev/chainguard/static:latestUsa immagine statica nel Dockerfile
FROM cgr.dev/chainguard/python:latest-devUsa variante dev con pip e shell
FROM cgr.dev/chainguard/node:latest AS buildUsa come fase di build
FROM cgr.dev/chainguard/go:latest AS builderUsa immagine Go per la compilazione
docker run --rm cgr.dev/chainguard/wolfi-base shEsegui shell interattiva
docker run --rm -p 8080:8080 cgr.dev/chainguard/nginxEsegui server nginx
docker run --rm cgr.dev/chainguard/python -- python -c "print('hello')"Esegui one-liner Python
# Fase di build
FROM cgr.dev/chainguard/go:latest AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /server ./cmd/server

# Fase runtime - distroless, senza shell, senza gestore pacchetti
FROM cgr.dev/chainguard/static:latest
COPY --from=builder /server /server
EXPOSE 8080
ENTRYPOINT ["/server"]
# Fase di build con pip disponibile
FROM cgr.dev/chainguard/python:latest-dev AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
COPY . .

# Fase runtime - Python minimale, senza pip, senza shell
FROM cgr.dev/chainguard/python:latest
COPY --from=builder /install /usr/local
COPY --from=builder /app /app
WORKDIR /app
ENTRYPOINT ["python", "-m", "myapp"]
# Fase di build
FROM cgr.dev/chainguard/node:latest-dev AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build

# Fase runtime
FROM cgr.dev/chainguard/node:latest
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
EXPOSE 3000
ENTRYPOINT ["node", "dist/index.js"]
# Fase di build
FROM cgr.dev/chainguard/jdk:latest-dev AS builder
WORKDIR /app
COPY . .
RUN ./gradlew build --no-daemon -x test

# Fase runtime
FROM cgr.dev/chainguard/jre:latest
COPY --from=builder /app/build/libs/app.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
ComandoDescrizione
chainctl auth loginAutenticati con Chainguard
chainctl auth login --headlessLogin in ambienti headless
chainctl auth configure-dockerConfigura Docker per usare il registro Chainguard
chainctl images listElenca le immagini Chainguard disponibili
chainctl images repos list --group=GROUP_IDElenca i repo immagini per un gruppo
chainctl images diff IMAGE1 IMAGE2Confronta due versioni di immagine
chainctl images history cgr.dev/chainguard/pythonMostra la cronologia delle versioni dell’immagine
Naviga su images.chainguard.devCatalogo web di tutte le immagini
ComandoDescrizione
crane ls cgr.dev/chainguard/pythonElenca i tag disponibili per un’immagine
crane manifest cgr.dev/chainguard/python:latestVisualizza il manifest dell’immagine
crane config cgr.dev/chainguard/python:latestVisualizza la configurazione dell’immagine
docker inspect cgr.dev/chainguard/python:latestIspeziona i metadati dell’immagine
docker history cgr.dev/chainguard/python:latestVisualizza i layer dell’immagine
dive cgr.dev/chainguard/python:latestEsplora i layer dell’immagine interattivamente
ComandoDescrizione
cosign verify --certificate-oidc-issuer=https://token.actions.githubusercontent.com --certificate-identity-regexp='chainguard' cgr.dev/chainguard/pythonVerifica la firma dell’immagine
cosign verify-attestation --type spdx cgr.dev/chainguard/pythonVerifica attestazione SBOM
cosign verify-attestation --type vuln cgr.dev/chainguard/pythonVerifica attestazione vulnerabilita
cosign tree cgr.dev/chainguard/pythonVisualizza artefatti della supply chain
cosign verify-attestation --type slsaprovenance cgr.dev/chainguard/pythonVerifica provenienza SLSA
# Verifica la firma di un'immagine Chainguard
cosign verify \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  --certificate-identity-regexp="chainguard" \
  cgr.dev/chainguard/python:latest

# Verifica attestazione SBOM e visualizza l'output
cosign verify-attestation \
  --type spdx \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  --certificate-identity-regexp="chainguard" \
  cgr.dev/chainguard/python:latest | jq -r '.payload' | base64 -d | jq .

# Verifica attestazione di scansione vulnerabilita
cosign verify-attestation \
  --type vuln \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  --certificate-identity-regexp="chainguard" \
  cgr.dev/chainguard/python:latest
ComandoDescrizione
grype cgr.dev/chainguard/pythonScansiona immagine per vulnerabilita con Grype
grype cgr.dev/chainguard/python --only-fixedMostra solo vulnerabilita risolvibili
trivy image cgr.dev/chainguard/pythonScansiona con scanner Trivy
trivy image --severity HIGH,CRITICAL cgr.dev/chainguard/pythonScansiona solo per alta/critica
docker scout cves cgr.dev/chainguard/pythonScansiona con Docker Scout
chainctl images vulns cgr.dev/chainguard/pythonVisualizza vulnerabilita note tramite chainctl
ComandoDescrizione
apk updateAggiorna l’indice dei pacchetti (nelle immagini dev)
apk add curlInstalla un pacchetto
apk add --no-cache python3 py3-pipInstalla senza cache dell’indice
apk add --virtual .build-deps gcc musl-devInstalla dipendenze di build virtuali
apk del .build-depsRimuovi gruppo di pacchetti virtuali
apk del curlRimuovi un pacchetto
apk list --installedElenca pacchetti installati
apk search nginxCerca pacchetti disponibili
apk info python3Mostra dettagli del pacchetto
apk info -L python3Elenca file in un pacchetto
ComandoDescrizione
melange keygenGenera chiavi di firma per i pacchetti
melange build recipe.yaml --signing-key melange.rsaBuild pacchetto APK dalla ricetta
melange build recipe.yaml --arch x86_64,aarch64Build per architetture multiple
melange bump recipe.yaml 1.2.3Aggiorna versione nella ricetta
package:
  name: myapp
  version: 1.0.0
  epoch: 0
  description: My custom application
  copyright:
    - license: Apache-2.0

environment:
  contents:
    packages:
      - build-base
      - go
      - ca-certificates-bundle

pipeline:
  - uses: git-checkout
    with:
      repository: https://github.com/org/myapp
      tag: v${{package.version}}

  - uses: go/build
    with:
      packages: ./cmd/myapp
      output: myapp
      ldflags: -s -w

  - uses: strip
ComandoDescrizione
apko build config.yaml tag output.tarBuild immagine OCI da configurazione YAML
apko publish config.yaml tagBuild e push dell’immagine nel registro
apko build config.yaml tag output.tar --arch x86_64,aarch64Build immagine multi-architettura
docker load < output.tarCarica immagine costruita in Docker
contents:
  packages:
    - ca-certificates-bundle
    - wolfi-baselayout
    - myapp
  repositories:
    - https://packages.wolfi.dev/os
    - /path/to/local/packages

accounts:
  groups:
    - groupname: nonroot
      gid: 65532
  users:
    - username: nonroot
      uid: 65532
      gid: 65532
  run-as: 65532

entrypoint:
  command: /usr/bin/myapp

archs:
  - x86_64
  - aarch64

environment:
  APP_ENV: production
  PORT: "8080"
ComandoDescrizione
cosign download sbom cgr.dev/chainguard/pythonScarica SBOM dell’immagine
syft cgr.dev/chainguard/pythonGenera SBOM con Syft
syft cgr.dev/chainguard/python -o spdx-jsonGenera SBOM in formato SPDX
syft cgr.dev/chainguard/python -o cyclonedx-jsonGenera SBOM in formato CycloneDX
cosign download attestation cgr.dev/chainguard/pythonScarica tutte le attestazioni
cosign verify-attestation --type slsaprovenance cgr.dev/chainguard/pythonVerifica provenienza SLSA
chainctl images vulns cgr.dev/chainguard/pythonVisualizza vulnerabilita note
# Sigstore Policy Controller - richiedi firme Chainguard
apiVersion: policy.sigstore.dev/v1beta1
kind: ClusterImagePolicy
metadata:
  name: require-chainguard-signatures
spec:
  images:
    - glob: "cgr.dev/chainguard/**"
    - glob: "cgr.dev/chainguard-private/**"
  authorities:
    - keyless:
        url: https://fulcio.sigstore.dev
        identities:
          - issuerRegExp: ".*"
            subjectRegExp: ".*chainguard.*"
        ctlog:
          url: https://rekor.sigstore.dev
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-chainguard-images
spec:
  validationFailureAction: Enforce
  background: true
  rules:
    - name: check-image-registry
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "Only Chainguard images from cgr.dev are allowed."
        pattern:
          spec:
            containers:
              - image: "cgr.dev/chainguard/*"
            initContainers:
              - image: "cgr.dev/chainguard/*"
# GitHub Actions - verifica e scansiona prima della distribuzione
name: Image Verification
on:
  push:
    branches: [main]

jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - name: Install cosign
        uses: sigstore/cosign-installer@v3

      - name: Verify image signature
        run: |
          cosign verify \
            --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
            --certificate-identity-regexp="chainguard" \
            cgr.dev/chainguard/python:latest

      - name: Scan for vulnerabilities
        uses: anchore/grype-action@v0
        with:
          image: cgr.dev/chainguard/python:latest
          fail-on: high
  1. Usa build multi-stage — compila nelle immagini -dev (che hanno compilatori e gestori di pacchetti) e copia solo l’artefatto finale nell’immagine runtime minimale.

  2. Fissa le immagini per digest — usa i digest @sha256:... invece dei tag per le distribuzioni in produzione per garantire la riproducibilita.

  3. Scegli l’immagine base giusta — usa static per binari compilati senza dipendenze dal sistema operativo, wolfi-base quando hai bisogno di una shell, e immagini specifiche per linguaggio per i linguaggi interpretati.

  4. Verifica le firme nella CI/CD — verifica sempre le firme delle immagini Chainguard con cosign prima di compilare o distribuire.

  5. Scansiona anche le immagini a zero CVE — esegui scansioni di vulnerabilita come passaggio di validazione; le immagini Chainguard dovrebbero restituire zero risultati, confermando che la tua pipeline usa immagini genuine.

  6. Usa le varianti -dev solo nelle fasi di build — non distribuire mai immagini -dev in produzione; includono strumenti che aumentano la superficie di attacco.

  7. Esegui come nonroot — le immagini Chainguard usano l’utente nonroot per impostazione predefinita; mantieni questo nei tuoi Dockerfile non passando a root.

  8. Applica policy sulle immagini — usa Kyverno, OPA Gatekeeper o Sigstore Policy Controller per limitare i registri container nei tuoi cluster.

  9. Genera e archivia gli SBOM — usa Syft o cosign per scaricare gli SBOM per conformita e tracce di audit.

  10. Mantieni le immagini aggiornate — Chainguard ricostruisce le immagini frequentemente; aggiorna i tuoi digest regolarmente per ottenere le ultime patch di sicurezza.