GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak zastavit kontejnery Docker

Tento výukový program dockeru popisuje metody zastavení jednoho kontejneru dockeru, více kontejnerů dockeru nebo všech spuštěných kontejnerů dockeru najednou. Naučíte se také elegantně zastavit dokovací kontejner.

Chcete-li zastavit ukotvitelný kontejner, vše, co musíte udělat, je použít ID kontejneru nebo název kontejneru následujícím způsobem:

docker stop container_ID_or_name

Můžete také použít příkaz docker container stop container_id_or_name, ale to je další slovo v příkazu a neposkytuje žádné další výhody, takže zůstaňte u docker stop.

Zastavení kontejneru dockeru však obsahuje více věcí, které byste měli vědět, zvláště pokud jste začátečník v Dockeru.

Praktické příklady zastavení kontejneru docker

V tomto tutoriálu proberu různé aspekty týkající se zastavení dokovacího kontejneru:

  • Zastavit ukotvitelný kontejner
  • Zastavte více kontejnerů dokovacích stanic najednou
  • Zastavit všechny kontejnery dokovacích stanic s určitým obrázkem
  • Zastavte všechny spuštěné kontejnery dockerů najednou
  • Slušné zastavení dokovacího kontejneru

Než to uvidíte, měli byste vědět, jak získat název nebo ID kontejneru.

Pomocí docker ps můžete vypsat všechny spuštěné kontejnery dockeru příkaz. Bez jakýchkoli voleb příkaz docker ps zobrazuje pouze běžící kontejnery.

[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

Výstup také poskytuje název kontejneru a ID kontejneru. K zastavení kontejneru můžete použít kterýkoli z těchto dvou.

Nyní pojďme k zastavování kontejnerů.

1. Zastavte kontejner docker

Chcete-li zastavit konkrétní kontejner, použijte jeho ID nebo název s příkazem docker stop:

docker stop container_name_or_ID

Výstup by měl být popisnější, ale zobrazuje pouze název kontejneru nebo ID podle toho, co jste poskytli:

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

Příkaz docker stop můžete použít na již zastaveném kontejneru. Nevyvolá žádné chyby ani jiný výstup.

Zda byl kontejner zastaven, můžete ověřit pomocí příkazu docker ps -a. Volba -a zobrazuje všechny kontejnery, zda jsou spuštěné nebo zastavené.

[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

Pokud je stav Exited, znamená to, že kontejner již není spuštěn.

2. Zastavte více kontejnerů docker

Můžete také zastavit více kontejnerů dockerů najednou. Stačí zadat názvy a ID kontejnerů.

docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3

Stejně jako dříve bude výstup jednoduše zobrazovat název nebo ID kontejnerů:

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

3. Zastavit všechny kontejnery spojené s obrázkem

Doposud jste viděli zastavování kontejnerů explicitním uvedením jejich názvu nebo ID.

Co když chcete zastavit všechny spuštěné kontejnery určitého obrazu dockeru? Představte si scénář, kdy chcete odstranit obrázek dockeru, ale budete muset zastavit všechny související běžící kontejnery.

Názvy kontejnerů nebo ID můžete zadat jeden po druhém, ale to je časově náročné. Co můžete udělat, je filtrovat všechny běžící kontejnery na základě jejich základního obrázku.

Stačí nahradit IMAGE_NAME názvem vašeho obrázku dockeru a měli byste být schopni zastavit všechny spuštěné kontejnery spojené s tímto obrázkem.

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

Volba -q zobrazuje pouze ID kontejneru. Díky skvělému příkazu xargs jsou tato ID kontejnerů předávána do docker stop jako argument.

4. Zastavte všechny spuštěné kontejnery docker

Můžete čelit situaci, kdy budete muset zastavit všechny běžící kontejnery. Pokud například chcete odstranit všechny kontejnery v Dockeru, měli byste je předem zastavit.

K tomu můžete použít něco podobného, ​​co jste viděli v předchozí části. Stačí odstranit část obrázku.

docker ps -q | xargs docker stop

5. Zastavte kontejner elegantně

Abych byl upřímný, docker ve výchozím nastavení elegantně zastaví kontejner. Když použijete příkaz docker stop, dá kontejneru 10 sekund, než jej násilně zabije.

Neznamená to, že zastavení kontejneru vždy trvá 10 sekund. Jde jen o to, že pokud v kontejneru běží nějaké procesy, má 10 sekund na zastavení procesu a ukončení.

Docker stop příkaz nejprve odešle příkaz SIGTERM. Pokud je kontejner v této době zastaven, vyšle příkaz SIGKILL. Proces může ignorovat SIGTERM, ale SIGKILL proces okamžitě ukončí.

Doufám, že znáte rozdíl mezi SIGTERM a SIGKILL.

Co je SIGTERM? Jaký je rozdíl mezi SIGKILL a SIGTERM? SIGTERM i SIGKILL se používají k zabití procesu v Linuxu. Ale měli byste raději používat SIGTERM. Zde je důvod! Linux HandbookAbhishek Prakash

Tuto dobu odkladu 10 sekund můžete změnit pomocí volby -t. Předpokládejme, že před zastavením kontejneru chcete počkat 30 sekund:

docker stop -t 30 container_name_or_id

Nakonec…

Myslím, že toto množství informací pokrývá téma velmi dobře. O zastavení dokovacího kontejneru víte spoustu věcí.

Zůstaňte naladěni na další tipy a návody pro dockery. Máte-li dotazy nebo návrhy, dejte mi prosím vědět v sekci komentářů.


Docker
  1. Jak automaticky aktualizovat běžící kontejnery Docker

  2. Jak předávat proměnné prostředí do kontejnerů Docker

  3. Jak odstranit všechny kontejnery Docker

  1. Jak používat Docker Compose

  2. Jak připojit kontejnery Docker

  3. Jak vypsat Docker kontejnery

  1. Jak sdílet data mezi kontejnery Docker

  2. Jak vypsat / spustit / zastavit kontejnery Docker

  3. Jak spravovat kontejnery Docker? Osvědčené postupy