Guide/Come arrestare i container Docker
Come arrestare i container Docker sul Mac, uno o tutti
In breve
Per arrestare un container Docker, esegui docker stop seguito dal nome o dall’ID; docker ps li elenca. Per arrestare tutti i container in esecuzione, esegui docker stop $(docker ps -q). In un progetto Compose, docker compose stop arresta i suoi container e docker compose down li rimuove anche. docker stop chiede al container di chiudersi e lo forza dopo 10 secondi. Un container che ritorna ha una restart policy; disattivala con docker update --restart=no. Vitals, un monitor di sistema per Mac, arresta i container dalla barra dei menu: il suo elenco Container mostra la memoria di ciascuno, e un clic lo arresta dopo averti chiesto conferma.
Come arrestare i container Docker dal Terminale
- 01 Esegui
docker psper elencare i container in esecuzione, con nomi e ID. - 02 Arrestane uno con
docker stope il suo nome, per esempiodocker stop web-1. Puoi indicarne diversi in un solo comando. - 03 Arresta tutti i container in esecuzione con
docker stop $(docker ps -q).docker ps -qstampa solo gli ID, e docker stop li prende tutti. - 04 Per un progetto Compose, esegui
docker compose stopnella sua cartella per arrestarne i servizi, odocker compose downper arrestarli e rimuovere i container e la rete del progetto. I volumi restano, a meno che tu non aggiunga-v. - 05 Esegui di nuovo
docker ps. Un container ancora elencato si sta ancora chiudendo, e uno che ricompare un attimo dopo ha una restart policy.
Gli stessi comandi funzionano con OrbStack, Colima e Rancher Desktop quando il comando docker punta a loro. Podman ha podman stop, e podman stop -a li arresta tutti.
Arrestare un container termina i suoi processi e conserva tutto il resto, file, impostazioni e volumi, pronto per docker start. Per questo è il modo sicuro di recuperare memoria e CPU da un container che non stai usando. La tabella qui sotto lo confronta con i comandi a cui si ricorre di solito accanto a questo.
docker stop, kill, pause, rm e compose down
| Comando | Cosa fa | Quando usarlo |
|---|---|---|
| docker stop | Invia SIGTERM, poi SIGKILL dopo 10 secondi | Quasi sempre: l’app può finire di scrivere e chiudere le connessioni |
| docker kill | Invia subito SIGKILL | Un container ignora docker stop |
| docker pause | Congela i processi, che mantengono la loro memoria | Vuoi recuperare la CPU per un po’, non la memoria |
| docker rm | Rimuove un container arrestato, o uno in esecuzione con -f | Non ti serve più; i volumi con nome restano |
| docker compose stop | Arresta i container di un progetto e li conserva | Riavvierai presto lo stesso progetto |
| docker compose down | Arresta e rimuove i container e la rete | Vuoi ripartire da zero la prossima volta; aggiungi -v per rimuovere anche i volumi |
Perché un container arrestato si riavvia
Un container con una restart policy viene riavviato da Docker. Con always, un container che hai arrestato torna al successivo avvio di Docker Desktop, quindi i container arrestati ieri sono di nuovo in esecuzione dopo un riavvio. Con unless-stopped, un container che hai arrestato resta arrestato. I file Compose spesso impostano restart: always su database e cache.
Per vedere la policy di un container, esegui docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' seguito dal suo nome. Per disattivarla, esegui docker update --restart=no e il nome, o cambia restart: nel file Compose.
Quando docker stop impiega 10 secondi
docker stop aspetta che il processo principale del container esca dopo SIGTERM. Un processo che ignora il segnale, spesso uno script di shell che non lo inoltra, blocca l’arresto per tutti i 10 secondi prima che Docker lo termini. docker stop -t 2 accorcia l’attesa. Correggere l’immagine la fa arrestare subito: avvia l’app con exec nello script di entrypoint, o imposta init: true sul servizio in Compose.
Arrestare i container e recuperare la memoria
Sul Mac, i container girano dentro un’unica macchina virtuale Linux. Arrestarli libera la loro memoria al suo interno, ma la macchina virtuale può continuare a trattenerla, quindi Monitoraggio Attività può mostrare ancora un grande Virtual Machine Service for Docker. Resource Saver, o chiudere Docker Desktop, la restituisce a macOS; vedi Docker usa troppa memoria per le impostazioni.
Arrestare i container senza Terminale
La vista Containers di Docker Desktop ha un pulsante Stop su ogni container e su ogni progetto Compose. Sta nella finestra di Docker Desktop, quindi devi aprire l’app per usarlo. App per la barra dei menu come Captain elencano i container sotto un’icona nella barra dei menu, con avvio e arresto per ciascuno. Vitals fa lo stesso dalla sua barra dei menu, e aggiunge ciò che nessuna di queste mostra: quanta memoria e CPU usa ogni container, così sai quale arrestare.
Cosa aggiunge Vitals
Vitals arresta i container dalla barra dei menu del Mac, con la loro memoria in vista.
- L’elenco Container nel menu: ogni container in esecuzione con il suo progetto Compose, la sua immagine e una barra per la memoria
- Passa sopra uno e fai clic sulla × che compare. La riga chiede conferma, poi lo arresta come fa
docker stop, con 10 secondi per chiudersi - Nel pannello Container della finestra, selezionane diversi e fai Control-clic per arrestarli insieme, oppure fai Control-clic su un progetto Compose e scegli Arresta tutti
- Memoria, CPU, rete, disco e porte pubblicate per ogni container, con Docker Desktop, OrbStack, Colima, Rancher Desktop e Podman
Buono a sapersi
- Vitals chiede conferma prima di arrestare qualcosa, e non avvia, rimuove o modifica mai un container.
- Un container con una restart policy può essere riavviato dal suo motore. La finestra lo dice quando chiede conferma.
- Se il motore rifiuta o non risponde, la riga indica che il container è ancora in esecuzione.
- L’elenco Container compare mentre un motore è in esecuzione.
Domande frequenti
Come arresto tutti i container Docker in una volta?
Esegui docker stop $(docker ps -q). Elenca gli ID di tutti i container in esecuzione e li arresta uno per uno. In Vitals, selezionali nel pannello Container e fai Control-clic per arrestarli insieme.
Qual è la differenza tra docker stop e docker kill?
docker stop invia SIGTERM e aspetta fino a 10 secondi prima di forzare il container con SIGKILL. docker kill invia subito SIGKILL, quindi l’app non ha modo di finire di scrivere o di chiudere le connessioni.
Qual è la differenza tra docker compose stop e down?
docker compose stop arresta i container e li conserva, pronti per docker compose start. docker compose down li arresta e rimuove i container e la rete del progetto; i volumi restano, a meno che tu non aggiunga -v.
Perché il mio container Docker si riavvia dopo che l’ho arrestato?
Ha una restart policy always, quindi Docker lo riavvia quando si avvia Docker Desktop. Esegui docker update --restart=no con il suo nome, o cambia restart: nel file Compose.
Arrestare un container ne cancella i dati?
No. Un container arrestato conserva i suoi file e volumi, e docker start lo riavvia. docker rm rimuove il container; i volumi con nome restano finché non li rimuovi.
Posso arrestare i container Docker dalla barra dei menu del Mac?
Sì, con Vitals. Il suo menu nella barra dei menu elenca i container in esecuzione con la loro memoria, e con un clic arresti un container dopo la conferma. Funziona con Docker Desktop, OrbStack, Colima, Rancher Desktop e Podman.
Nel glossario
Altre guide
- Perché il Mac è così lento
- Cosa scarica la batteria del Mac
- Quale app usa la CPU o la memoria
- Perché il Mac non va in standby
- Chrome usa troppa memoria
- Perché le ventole del Mac sono così rumorose
- Come controllare la velocità delle ventole sul Mac
- Come liberare RAM sul Mac
- Docker usa troppa memoria
- Mixer del volume per Mac
- Alternative a Monitoraggio Attività
- Alternative a iStat Menus
- Alternative a Stats
- Task Manager per Mac
- I migliori monitor di sistema per Mac
- Migliori monitor per la barra dei menu del Mac
- I migliori mixer del volume per Mac