Vai al contenuto
SDETRole
SDETRole

Glossario · CI/CD e DevOps

Container Docker

In inglese: Docker container

Detto anche: immagine Docker, Docker image, immagini Docker

Definizione

Un'istanza isolata e in esecuzione di un'immagine Docker che impacchetta un'app o un servizio con le sue dipendenze, così che funzioni allo stesso modo in locale e in CI.

Un container Docker è un processo avviato da un’immagine Docker e isolato dal resto della macchina: ha il proprio filesystem, la propria interfaccia di rete e il proprio elenco di processi, ma condivide il kernel dell’host. L’immagine è il modello in sola lettura (un layer di base del sistema operativo, i runtime, la tua app); il container ne è un’istanza in esecuzione. Puoi avviare molti container da una sola immagine e buttarli via quando hai finito.

Esempio

Avvia un nodo Selenium Chrome usa e getta e un database Postgres per eseguire i test in locale:

docker run --rm -d --name chrome -p 4444:4444 --shm-size=2g selenium/standalone-chrome:latest
docker run --rm -d --name db -p 5432:5432 -e POSTGRES_PASSWORD=test postgres:16-alpine

docker ps          # list running containers
docker logs db     # read a container's output
docker stop chrome db

--rm elimina il container quando si ferma, -d lo esegue in background e -p host:container pubblica una porta. Nei progetti reali si fissano i tag delle immagini (per esempio postgres:16.4-alpine) invece di usare latest, così che una nuova release upstream non cambi il tuo ambiente di test da un giorno all’altro.

Perché i tester usano i container

  • Ambienti riproducibili. La stessa immagine gira su ogni laptop e su ogni runner di CI, eliminando un’intera categoria di fallimenti del tipo “sulla mia macchina funziona”.
  • Dipendenze usa e getta. Un database nuovo per ogni esecuzione dei test significa nessun dato residuo dall’esecuzione di ieri.
  • Browser in parallelo. Selenium Grid e le immagini dei browser ti permettono di aumentare e ridurre i nodi con un comando.
  • Eseguire la suite di test stessa. Playwright pubblica immagini ufficiali con browser e librerie di sistema preinstallati, evitando errori per dipendenze mancanti sugli agent di CI.

Differenza rispetto a una macchina virtuale

Una VM emula una macchina completa con il proprio kernel, quindi è più pesante e più lenta ad avviarsi. Un container condivide il kernel dell’host, si avvia in pochi secondi e usa molta meno memoria. Il compromesso è un isolamento più debole, che conta per i confini di sicurezza ma raramente per gli ambienti di test.

Errori comuni

Salvare i dati di test dentro un container aspettandosi che sopravvivano a un riavvio (usa i volumi), usare i tag latest e dimenticare --shm-size per i container dei browser, cosa che fa andare in crash Chrome sotto carico.

Scrivi per cercare in tutto SDETRole.

Ricerca full-text con Pagefind · funziona nel tuo browser Apri la pagina di ricerca →