Vai al contenuto principale

Docker Stop All Containers: una guida passo passo

Scopri come fermare tutti i container Docker in esecuzione usando comandi semplici. Questo ti aiuterà a gestire le risorse di sistema e a snellire il tuo ambiente Docker.
Aggiornato 29 set 2026  · 5 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Fermare i container uno per uno può rallentare il tuo workflow di sviluppo e portare a errori quando gestisci microservizi o applicazioni multi-container. 

In questa guida, vedremo diversi metodi per terminare tutti i container in esecuzione.

Alla fine di questo tutorial, sarai in grado di:  

  • Capire come Docker gestisce i segnali e i periodi di attesa (grace period)
  • Arrestare tutti i container usando semplici tecniche CLI e filtri
  • Sfruttare Docker Compose e alias personalizzati per workflow più snelli 

Comprendere la terminazione dei container Docker

Prima di fermare i container in blocco, è utile capired come Docker orchestra gli arresti sotto il cofano.

Gestione dei processi basata su segnali

Docker usa i segnali Unix per richiedere arresti graduali prima di forzare la terminazione. Il comportamento predefinito del comando docker stop è: 

  1. Inviare SIGTERM al processo principale del container.  
  2. Attendere fino a 10 secondi (configurabile con -t/--time).  
  3. Inviare SIGKILL se il processo non è uscito.
  • SIGTERM: Chiede educatamente al processo di ripulire e uscire.  
  • Grace period: Concede alle applicazioni il tempo di scaricare i log, chiudere le connessioni o salvare lo stato.  
  • SIGKILL: Forza l'immediata terminazione di qualsiasi processo non responsivo.

Sequenza temporale che illustra l'ordine dei segnali di docker stop: SIGTERM, attesa, poi SIGKILL.

Meccanismi della riga di comando (CLI)

Per impostazione predefinita, docker stop gestisce un container alla volta. Puoi estenderlo per fermare più container usando le funzionalità della shell.

# Stop a single container named my_container
docker stop my_container

Questo invia SIGTERM a my_container e attende i 10 secondi predefiniti prima di inviare SIGKILL, se necessario.

# Stop all running containers at once
docker stop $(docker ps -q)

Qui, docker ps -q elenca gli ID di tutti i container in esecuzione; quegli ID vengono passati a docker stop, che arresta i container in sequenza.

Sessione terminale che invia in pipe docker ps -q a docker stop per arrestare tutti i container.

Screenshot di un terminale che mostra l'output di docker ps -q inviato in pipe a docker stop

Per comprendere più a fondo questi concetti, valuta di esplorare Containerization and Virtualization Concepts.

Confronto tra docker stop e docker kill

Scegliere tra terminazione graduale e forzata ti aiuta a evitare conseguenze indesiderate.

Terminazione graduale vs. immediata

Comando

Segnale/i

Comportamento

Caso d'uso

docker stop

SIGTERM → SIGKILL dopo timeout

Arresto graduale con tempo per le pulizie

Manutenzione ordinaria o aggiornamenti

docker kill

SIGKILL

Terminazione immediata  

Interventi d'emergenza su container bloccati

Personalizzazione dei segnali

Entrambi i comandi supportano il flag --signal per sovrascrivere i valori predefiniti:

# Send SIGINT instead of SIGTERM
docker stop --signal=SIGINT my_container

Questo permette ai processi di intercettare SIGINT per pulizie personalizzate.

# Kill all containers with SIGUSR1
docker kill --signal=SIGUSR1 $(docker ps -q)

Come visto sopra, puoi usare segnali personalizzati quando la tua applicazione implementa hook di arresto specifici.

Strategie avanzate per fermare i container

Filtrare e automatizzare l'arresto dei container consente workflow DevOps più precisi, soprattutto in ambienti su larga scala.  

Una volta compresi i fondamentali, puoi perfezionare quali container fermare e come automatizzare il processo.

Terminazione filtrata dei container

I filtri ti permettono di prendere di mira i container per attributi come nome dell'immagine, stato o etichette:

# Stop containers running the my_image:latest image
docker stop $(docker ps --filter "ancestor=my_image:latest" -q)

Il comando sopra ferma solo i container basati su my_image:latest, offrendo un controllo mirato in progetti multi-servizio.

Casi d'uso:  

  • Arrestare i container di test per tag di immagine (--filter "ancestor=test:latest")  
  • Fermare i container per etichetta (--filter "label=env=dev")

Filtraggio dell'output di docker ps per nome dell'immagine ancestor prima di fermare i container.

Screenshot del terminale sull'uso di docker ps --filter

Pulizia automatizzata con Docker Compose

Se i tuoi servizi sono definiti in un file docker-compose.yml, un singolo comando ferma tutti i container correlati:

docker-compose stop

Questo rispetta le dipendenze dei servizi e i timeout configurati per un arresto pulito.

Per tecniche più avanzate, potresti considerare il corso Intermediate Docker.

Ottimizzazione del workflow con alias

Per attività ripetitive, gli alias della shell riducono digitazioni e cambi di contesto:

# Add this to ~/.bashrc or ~/.zshrc
alias ds='docker stop $(docker ps -q)'

Dopo aver ricaricato la shell, eseguire ds ferma tutti i container con una scorciatoia—ideale per una pulizia rapida.

Terminale che mostra l'uso riuscito di un alias personalizzato 'ds' per fermare tutti i container Docker in esecuzione in Ubuntu WSL.

Uso dell'alias 'ds' per fermare tutti i container in esecuzione su Ubuntu WSL

Best practice operative

Implementa routine di arresto sicure e pulizie regolari per mantenere l'ambiente stabile e performante.

  • Implementa gestori di segnali nel codice della tua applicazione per chiudere connessioni e scaricare i log.  
  • Riserva docker kill agli interventi di emergenza; evita incongruenze nei dati.  
  • Adatta i grace period (-t/--time) in base alle esigenze di pulizia della tua applicazione.  
  • Automatizza la pulizia post-arresto con comandi come docker system prune, come descritto in Docker Prune: A Complete Guide with Hands-On Examples.
  • Registrare gli eventi di arresto (timestamp e codici di uscita) per diagnosticare problemi di terminazione.

Risoluzione dei problemi comuni

Anche comandi semplici possono incepparsi—ecco come affrontarli.

Processi zombie e volumi orfani

Le terminazioni forzate possono lasciare processi obsoleti o volumi orfani, consumando risorse dell'host e spazio su disco. Per pulire:

# Remove dangling volumes
docker volume prune

Questo elimina tutti i volumi non referenziati da alcun container.

Controlla la presenza di processi del demone Docker persistenti:

ps aux | grep dockerd

Termina manualmente eventuali processi figlio di dockerd se persistono.

Caso reale: in un progetto, ho usato docker kill su un container di database quando una migrazione si è bloccata. L'arresto improvviso ha impedito al DB di scaricare i log delle transazioni, corrompendo le tabelle InnoDB. Abbiamo dovuto ripristinare dai backup e riprodurre i binlog, causando oltre 30 minuti di downtime. Per evitarlo, preferisci docker stop con un timeout esteso o aggiungi gestori SIGTERM adeguati nella tua applicazione.

Errori di autorizzazione negata

Eseguire comandi Docker senza i privilegi corretti spesso genera errori:

  • Anteponi sudo ai comandi o esegui come utente nel gruppo docker.  
  • Aggiungi il tuo utente al gruppo docker e rientra:
sudo usermod -aG docker $USER

Dopo aver fatto logout e login, potrai eseguire i comandi Docker senza sudo. In un ambiente CI, assicurati che l'utente del runner abbia l'appartenenza al gruppo Docker per evitare errori in pipeline.

Considerazioni specifiche per Windows

Su Windows PowerShell, racchiudi i sottocomandi tra parentesi ed esegui come Amministratore:

docker stop (docker ps -q)

Avviare PowerShell con diritti elevati evita problemi di firewall o controllo degli accessi. Se vedi errori di handshake TLS, verifica che la configurazione del demone di Docker Desktop corrisponda al tuo ambiente PowerShell.

Conclusione

Arrestare in modo efficiente tutti i tuoi container Docker fa risparmiare tempo, conserva risorse e riduce gli errori umani nel tuo workflow di sviluppo. Puoi mantenere un ambiente pulito e prevedibile comprendendo la gestione dei segnali di Docker, sfruttando i filtri CLI, usando Docker Compose e creando semplici alias. 

Esplora il percorso Containerization and Virtualization with Docker and Kubernetes o il corso Intermediate Docker per approfondire la tua esperienza con la containerizzazione.

Buona containerizzazione—e brindiamo a workflow Docker puliti ed efficienti!

FAQ

Quale codice di uscita restituisce docker stop?

In caso di successo, docker stop restituisce 0. Un codice di uscita diverso da zero indica che uno o più container non sono stati fermati.

Posso visualizzare in anteprima quali container verranno fermati prima di eseguire il comando?

Sì—esegui docker ps o docker ps -q per elencare i container in esecuzione e verificare ID o nomi prima di eseguire docker stop.

In che modo le policy di riavvio influiscono sui container fermati?

I container con una policy di riavvio come always verranno riavviati automaticamente dopo l'arresto. Rimuovi o modifica la policy con docker update --restart=no <container> se vuoi che restino fermi.

C'è un modo per fermare i container per rete o volume?

Sebbene Docker non filtri direttamente per rete o volume con docker stop, puoi combinare docker ps --filter "network=<name>" o docker ps --filter "volume=<name>" con la sostituzione di comando.

Come posso integrare docker stop in una pipeline CI/CD?

Integra il comando di stop nei tuoi script di build o job CI—usa flag come --signal e i filtri per arresti mirati, poi prosegui con i comandi di pulizia (docker system prune) nella stessa pipeline.

Posso riavviare tutti i container fermati in seguito?

Sì, usa docker start $(docker ps -a -q) per riavviare tutti i container, inclusi quelli precedentemente fermati.

Fermare tutti i container li rimuove?

No, fermare i container non li elimina. Rimangono nel sistema finché non li rimuovi con docker rm.

Come posso automatizzare l'arresto dei container ogni giorno?

Usa un cron job con il comando docker stop $(docker ps -q) per programmare un arresto automatico.

docker stop influisce su volumi o reti?

No, fermare un container non influisce sui volumi o sulle reti collegate—rimangono intatti.

Posso escludere alcuni container dall'arresto?

Puoi fermare selettivamente i container usando docker ps con filtri o escludendo specifici ID di container dal comando.

Quali strumenti possono aiutare a gestire i container oltre ai comandi CLI?

Strumenti come Portainer o Docker Desktop offrono una gestione via GUI, rendendo il controllo dei container più semplice per i principianti.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Sono un data engineer e community builder: lavoro su pipeline dati, cloud e strumenti di AI, e scrivo tutorial pratici e ad alto impatto per DataCamp e per sviluppatori alle prime armi.

Argomenti
Docker

Scopri di più su Docker con questi corsi!

Corso

Introduzione a Docker

4 ore
52.3K
Scopri cos'è Docker e perché è importante per chi lavora con i dati. Scopri i container Docker, le immagini e molto altro ancora.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Mostra AltroMostra Altro