GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come fermare i container Docker

Questo tutorial sulla finestra mobile illustra i metodi per arrestare un singolo contenitore mobile, più contenitori mobili o tutti i contenitori mobili in esecuzione contemporaneamente. Imparerai anche a fermare con grazia un contenitore mobile.

Per interrompere un contenitore mobile, tutto ciò che devi fare è utilizzare l'ID contenitore o il nome del contenitore nel modo seguente:

docker stop container_ID_or_name

Puoi anche utilizzare il comando docker container stop container_id_or_name, ma questa è una parola aggiuntiva nel comando e non fornisce alcun vantaggio aggiuntivo, quindi attieniti a docker stop.

Ma c'è di più per fermare un container Docker che dovresti sapere, specialmente se sei un principiante Docker.

Esempi pratici per arrestare il container docker

Discuterò vari aspetti relativi all'arresto di un contenitore Docker in questo tutorial:

  • Arresta un container Docker
  • Arresta più contenitori Docker contemporaneamente
  • Arresta tutti i contenitori Docker con una determinata immagine
  • Arresta contemporaneamente tutti i contenitori Docker in esecuzione
  • Arresta con grazia un container Docker

Prima di vederlo, dovresti sapere come ottenere il nome o l'ID del contenitore.

Puoi elencare tutti i contenitori docker in esecuzione con docker ps comando. Senza alcuna opzione, il comando docker ps mostra solo i contenitori in esecuzione.

[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1bcf775d8cc7        ubuntu              "bash"              8 minutes ago       Up About a minute                       container-2
94f92052f55f        debian              "bash"              10 minutes ago      Up 10 minutes                           container-1

L'output fornisce anche il nome del contenitore e l'ID del contenitore. Puoi usare uno di questi due per fermare un container.

Ora andiamo a fermare i container.

1. Arresta un container Docker

Per arrestare un contenitore specifico, utilizza il suo ID o nome con il comando di arresto della finestra mobile:

docker stop container_name_or_ID

L'output avrebbe dovuto essere più descrittivo, ma mostra solo il nome o l'ID del contenitore, a seconda di quello che hai fornito:

[email protected]:~$ docker stop 1bcf775d8cc7
1bcf775d8cc7

È possibile utilizzare il comando Docker stop su un container già arrestato. Non genererà errori o un output diverso.

È possibile verificare se il contenitore è stato arrestato utilizzando il comando docker ps -a. L'opzione -a mostra tutti i contenitori in esecuzione o fermi.

[email protected]:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
1bcf775d8cc7        ubuntu              "bash"              19 minutes ago      Exited (0) About a minute ago                       container-2
94f92052f55f        debian              "bash"              29 minutes ago      Up 29 minutes                                   container-1

Se lo stato è Exited, significa che il container non è più in esecuzione.

2. Arresta più contenitori Docker

Puoi anche fermare più contenitori Docker contemporaneamente. Devi solo fornire i nomi e gli ID del contenitore.

docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3

Come in precedenza, l'output mostrerà semplicemente il nome o l'ID dei contenitori:

[email protected]:~$ docker stop container-1 container-2 container-3
container-1
container-2
container-3

3. Arresta tutti i contenitori associati a un'immagine

Finora cosa hai visto fermare i contenitori menzionando esplicitamente il loro nome o ID.

Cosa succede se si desidera interrompere tutti i contenitori in esecuzione di una determinata immagine Docker? Immagina uno scenario in cui desideri rimuovere un'immagine della finestra mobile ma dovrai interrompere tutti i contenitori in esecuzione associati.

Puoi fornire i nomi o gli ID del contenitore uno per uno, ma ciò richiede molto tempo. Quello che puoi fare è filtrare tutti i contenitori in esecuzione in base alla loro immagine di base.

Sostituisci IMAGE_NAME con il nome dell'immagine della finestra mobile e dovresti essere in grado di interrompere tutti i contenitori in esecuzione associati a quell'immagine.

docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop

L'opzione -q mostra solo l'ID del contenitore. Grazie al meraviglioso comando xargs, questi ID contenitore vengono reindirizzati alla finestra mobile come argomento.

4. Arresta tutti i contenitori Docker in esecuzione

Potresti trovarti di fronte a una situazione in cui ti viene richiesto di interrompere tutti i contenitori in esecuzione. Ad esempio, se desideri rimuovere tutti i contenitori in Docker, devi interromperli in anticipo.

Per farlo, puoi usare qualcosa di simile a quello che hai visto nella sezione precedente. Basta rimuovere la parte dell'immagine.

docker ps -q | xargs docker stop

5. Ferma un contenitore con grazia

Ad essere onesti, Docker interrompe un contenitore con grazia per impostazione predefinita. Quando usi il comando di arresto della finestra mobile, dà al contenitore 10 secondi prima di ucciderlo forzatamente.

Ciò non significa che occorrano sempre 10 secondi per fermare un contenitore. È solo che se il container esegue alcuni processi, ha 10 secondi per interrompere il processo e uscire.

Il comando di arresto Docker invia prima il comando SIGTERM. Se il contenitore viene fermato in questo periodo, invia il comando SIGKILL. Un processo può ignorare il SIGTERM ma SIGKILL interromperà il processo immediatamente.

Spero che tu conosca la differenza tra SIGTERM e SIGKILL.

Cos'è SIGTERM? Qual è la differenza tra SIGKILL e SIGTERM? Sia SIGTERM che SIGKILL sono usati per uccidere un processo in Linux. Ma dovresti preferire usare SIGTERM. Ecco perché! Manuale LinuxAbhishek Prakash

Puoi modificare questo periodo di grazia di 10 secondi con l'opzione -t. Supponiamo di voler attendere 30 secondi prima di fermare il contenitore:

docker stop -t 30 container_name_or_id

Alla fine...

Penso che tutte queste informazioni coprano molto bene l'argomento. Sai molte cose sull'arresto di un container Docker.

Resta sintonizzato per ulteriori suggerimenti e tutorial sulla finestra mobile. Se hai domande o suggerimenti, faccelo sapere nella sezione commenti.


Docker
  1. Come aggiornare automaticamente i contenitori Docker in esecuzione

  2. Come usare Docker Compose

  3. Come collegare i contenitori Docker

  4. Come passare le variabili d'ambiente ai container Docker

  5. Come elencare i contenitori Docker

Come eseguire i contenitori Docker

Come rimuovere i contenitori Docker

Come rinominare o rinominare i contenitori Docker

Come gestire i container Docker

Come elencare/avviare/arrestare/eliminare i contenitori docker

Come configurare gli spazi dei nomi di rete nei contenitori Docker