F FabGPT-FAQ

Docker: immagini e Dockerfile

Pull, build, multi-stage, scansione vulnerabilità e pulizia delle immagini. Ogni comando è verificato e copiabile; in chat basta descrivere cosa vuoi fare.

12 comandi in questa pagina

# Come vedo le immagini scaricate?

docker images

Con --filter dangling=true vedi gli strati orfani che occupano spazio.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come scarico una versione precisa di un'immagine?

docker pull nginx:1.27
# blindata al byte: docker pull nginx@sha256:<digest>

Mai latest in produzione: il tag si muove, il digest no.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?Come si aggiornano automaticamente i container (Watchtower e alternative)?

# Come costruisco un'immagine da un Dockerfile?

docker build -t miaapp:1.0 .

Il . è il build context: tienilo piccolo con un .dockerignore, o ogni build spedisce gigabyte al daemon.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come forzo una build senza cache (e con build-arg)?

docker build --no-cache --build-arg VERSIONE=2 -t miaapp:2.0 .

--no-cache serve quando un RUN scarica risorse che cambiano fuori dal Dockerfile.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come costruisco un'immagine multi-architettura (amd64+arm64)?

docker buildx build --platform linux/amd64,linux/arm64 -t utente/app:1.0 --push .

Serve buildx con QEMU; --push è obbligatorio: il manifest multi-arch non vive nello store locale.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come taggo e pubblico un'immagine su un registry?

docker tag miaapp:1.0 registry.example.com/miaapp:1.0
docker push registry.example.com/miaapp:1.0

Il nome dell'immagine È l'indirizzo del registry: il tag decide dove finisce il push.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come vedo i layer e il peso di un'immagine?

docker history <immagine>

Dimensione per layer: il posto dove scoprire perché l'immagine pesa 2 GB (di solito un COPY o un apt senza pulizia).

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come pulisco le immagini inutilizzate?

docker image prune        # solo dangling
docker image prune -a     # tutte le non usate

-a rimuove OGNI immagine non riferita da un container: il prossimo up riscarica tutto.

Approfondisci: Storage pieno su Proxmox: come liberare spazio senza disastri

# Come scansiono un'immagine per vulnerabilità?

trivy image nginx:1.27
# oppure: docker scout cves nginx:1.27

Da mettere in CI, non da lanciare una volta l'anno: le CVE arrivano dopo la build.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?Cos'è la supply chain security del software (SBOM, SLSA)?

# Come sposto un'immagine senza registry (tar)?

docker save -o app.tar miaapp:1.0
docker load -i app.tar

save/load per le immagini; export/import (diverso!) è per il filesystem di un container.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come snellisco un'immagine con la build multi-stage?

FROM golang:1.23 AS build
WORKDIR /src
COPY . .
RUN go build -o app

FROM gcr.io/distroless/static
COPY --from=build /src/app /
ENTRYPOINT ["/app"]

Compili nel primo stage, spedisci solo il binario: immagini 10-100 volte più piccole e molta meno superficie d'attacco.

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?

# Come controllo un Dockerfile con un linter?

hadolint Dockerfile

Intercetta i classici: latest, apt senza pulizia della cache, USER mancante (container che gira da root).

Approfondisci: Come si mette in sicurezza un container (e le sue immagini)?Container privilegiati o non privilegiati: quale usare?

Chiedi in chat