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 PrakashTuto 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ářů.