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

Používejte kontejnery Docker Stop bez šroubování!

Máte potíže s kontejnery Docker stop? Nalezení správného způsobu, jak zastavit kontejner, je obtížné se schopností vytvořit mnoho různých kontejnerů. V tomto článku se naučíte příkazy Dockeru k zastavení kontejneru nebo všech kontejnerů.

Čtěte dále a dozvíte se více!

Předpoklady

Chcete-li pokračovat v tomto tutoriálu, ujistěte se, že máte následující:

  • Windows 10 – Výukový program používá ke spuštění Dockeru Windows, ale stejné obecné kroky můžete použít také pro Linux nebo macOS.
  • Docker Desktop – Tento tutoriál používá verzi 3.5.2. Docker Engine je k dispozici, pokud používáte Linux, zatímco GUI není.
  • Spuštěný kontejner nebo kontejnery Docker.

Ukončení kontejnerů pomocí příkazu Kontejnery zastavení ukotvitelného panelu

Začněme prvním příkazem:docker stop kontejnery a jak zastavuje kontejnery.

Například možná potřebujete zastavit běžící kontejner s názvem mystifying_hofstadter a ID fb66ed502096 . Jak ukazuje příklad níže, zastavte kontejner pomocí docker stop příkaz kontejnery.

# Stop the container via the name
docker stop mystifying_hofstadter
# Stop the container via the ID (same container)
docker stop fb66ed50209

Co když máte několik běžících kontejnerů a chtěli byste je zastavit? docker stop Příkaz kontejnery podporuje zastavení více ID kontejnerů, jedno po druhém.

Nejprve vytvořte seznam všech kontejnerů pomocí docker ps a předejte ID kontejneru docker stop kontejnery, jak je znázorněno níže.

# List all running containers
docker ps
# Stop the following Docker containers via the container ID
docker stop a427a21c5558 e9dbd816f24c 31269ef5999e

Co když chcete zastavit všechny běžící kontejnery, aniž byste museli ručně získávat ID kontejnerů a předávat je docker stop ? docker ps -q příkaz to splní. -q parametr docker ps příkaz vypíše pouze ID kontejnerů.

# Create three containers. A semi-colon separates each command
docker run -d -t ubuntu; docker run -d -t ubuntu; docker run -d -t ubuntu
# List all running containers
docker ps -q
# Retrieve all running container IDs and pass those to docker stop
docker stop $(docker ps -q)

The $(docker ps -q) konstrukt výše je podvýraz v Bash na Linuxu a PowerShell na Windows. Dílčí výraz dává příkazu shellu zpracovat jednu sadu příkazů, docker ps -q , nejprve a poté vraťte sadu výsledků k původnímu příkazu docker stop .

docker stop Příkaz kontejnery používá signál SIGTERM. Signály Linuxu informují proces o události, ale je na procesu, aby rozhodl, jak na daný signál zareaguje.

Při použití signálu SIGTERM používá Docker signál k řádnému zastavení procesu čekáním na výchozí 10 sekund před odesláním signálu SIGKILL, který proces okamžitě ukončí.

Zastavení kontejneru pomocí procesních signálů

O výchozím chování Dockeru (signál zastavení) jste se dozvěděli pomocí docker stop příkaz container, při zastavování kontejneru. Možná ale nebudete chtít výchozí chování. Místo toho můžete dát pokyn Dockeru, aby používal alternativní signály zastavení.

Pomocí docker run příkazy --stop-signal příznak, můžete určit stop signál při spouštění kontejneru. Tento příznak nastavuje signál, který bude odeslán do běžícího kontejneru, když chcete, aby se zastavil.

V níže uvedeném příkladu --stop-signal flag má hodnotu SIGQUIT , který říká Dockeru, aby poslal signál SIGQUIT, když je čas zastavit kontejner. V příkladu jsou také použity následující parametry:

  • d – Spustí kontejner v odděleném režimu (na pozadí). Odpojený režim neumožní uživateli okamžitou interakci s kontejnerem, protože proces běží na pozadí.
  • t – alokuje konzoli Pseudo-TTY (PTY), která emuluje skutečnou terminálovou konzoli v kontejneru a zabrání okamžitému ukončení kontejneru Ubuntu. Kontejner Ubuntu v příkladu vyžaduje konzoli PTY, aby zůstala aktivní na pozadí.
  • „název obrázku“ – z jakého obrázku Dockeru se má kontejner poskytnout, v tomto případě z ubuntu obrázek.
docker run -d -t --stop-signal SIGQUIT ubuntu

Můžete také určit signál zastavení pomocí souboru Dockerfile, který Dockeru řekne, jak vytvořit kontejner. Do Dockerfile můžete přidat záznam specifikující signál zastavení pomocí STOPSIGNAL SIGQUIT , například. Můžete přepnout SIGQUIT s jakýmkoli signálem zastavení, který byste chtěli.

Okamžité opuštění kontejnerů pomocí docker kill

Nastanou chvíle, kdy budete chtít kontejnery opustit, aniž byste jim poskytli období odkladu. docker kill příkaz okamžitě zastaví kontejner.

Níže uvedený příklad předává kontejner s ID 2aa318273db5 k docker kill . Kontejner okamžitě opustí signál SIGKILL. Kontejneru nebude umožněn ladný výjezd. V důsledku příkazu se kontejner ukončí a zobrazí se ID kontejneru.

docker kill 2aa318273db5

Docker zabije všechny kontejnery pomocí příkazu docker kill $(docker ps -q) . Všimněte si, že (docker ps -q ) je zde podvýraz.

Zastavení a odebrání kontejneru pomocí docker rm

Ve výchozím nastavení, když vytvoříte kontejner, je tento kontejner vytvořen stejně jako předtím:je idempotentní. Odstranění kontejneru bude mít minimální dopad a s ohledem na to docker rm může násilně zastavit a vyjmout nádobu. Docker vydá SIGKILL signál do hlavního procesu a odebere kontejner ze seznamu dostupných kontejnerů ve vaší instalaci Dockeru.

Pokud si kontejner musí ponechat změněné interní soubory nebo musí být zachován jeho stav, odstranění kontejneru tyto změny zničí. Dejte si pozor na potenciální překlepy!

V následujícím příkladu jste možná spustili kontejner, kterému byl přiřazen název kind_galileo . Před vyjmutím nádoby je nutné nádobu zastavit, jak je znázorněno níže. docker ps -a příkaz zobrazuje stav Exited pro příklad kontejneru.

Nyní, když kontejner přestal vydávat docker rm příkaz zcela odstraní kontejner.

docker rm kind_galileo

Místo zastavení kontejneru a následného odstranění kontejneru použijte kombinaci --force a docker rm zastaví a odstraní nádobu v jediné operaci. Kontejner laughing_elion , již nebude možné spustit.

docker rm --force laughing_elion

Pokud nezadáte --force příkazem, objeví se chybová zpráva Error response from daemon: You cannot remove a running container...

Zastavení kontejnerů Docker pomocí Docker Compose

Příkazy Dockeru se obvykle používají na jednom kontejneru, ale můžete vytvořit službu s více kontejnery, které budou vzájemně spolupracovat. Nástroj Docker Compose vám umožňuje nakonfigurovat službu složenou z více kontejnerů, aby spolupracovaly.

Vzhledem k tomu, že kontejnery ve službě jsou navrženy tak, aby spolupracovaly, je nejlepší ladně zastavit celou službu, nikoli jednotlivé kontejnery.

Pokud máte službu spuštěnou s více kontejnery, [docker-compose stop] zastaví službu, aniž by odstranil kontejnery nebo službu. Postupujte podle níže uvedených pokynů a vytvořte službu Docker Compose, spusťte službu a nakonec ji elegantně zastavte.

1. Vytvořte adresář pro uložení konfiguračního souboru. V tomto příkladu adresář C:\Articles\Ubuntu uloží soubor.

mkdir C:\Articles\Ubuntu

2. Dále vytvořte soubor docker-compose.yml soubor obsahující následující konfiguraci. Níže uvedený soubor Docker Compose vytváří službu se dvěma kontejnery Ubuntu, a když je vyvolán, kontejnery se okamžitě neukončí.

# The specification version of docker-compose
version: "3.9"
# The collection of applications composing this service
services:
  # First Ubuntu Container
  container1:
    image: ubuntu
    # Same as the -t option and allocates a Psuedo-TTY, so the container does not immediately exit.
    tty: true
  # Second Ubuntu Container
  container2:
    image: ubuntu
    tty: true

3. V terminálové relaci přejděte do svého vlastního adresáře konfiguračního souboru Docker, což je v tomto příkladu C:\Articles\Ubuntu . Spusťte docker-compose up -d vygenerovat a spustit službu vytvořenou v předchozím kroku na pozadí, jak je označeno -d volba.

4. Ve stejné relaci terminálu a adresáři zadejte příkaz docker-compose stop ukončit službu a kontejnery elegantně.

docker-compose příkaz, jako je docker má také rm --force a kill parametry. docker-compose parametry fungují na službě namísto jednoho kontejneru. docker-compose kill příkaz také přebírá volbu -s možnost specifikovat signál zastavení.

Závěr

Docker kontejnery jsou mocným nástrojem pro vytváření jedinečných a segmentovaných prostředí pro vývojové a produkční použití. V tomto článku jste se dozvěděli několik způsobů, jak Docker zastaví jeden nebo více, dokonce všechny kontejnery. Také jste se dozvěděli o výchozím signálu zastavení, který Docker používá, a o tom, jak jej změnit.

S těmito znalostmi nyní víte, jak zastavovat kontejnery Docker a jak se nepodělat, když je čas zastavit provoz kontejnerů. Jak od této chvíle plánujete zastavit své kontejnery, když máte tyto nově nalezené znalosti?


Docker
  1. Co je Docker? Naučte se používat kontejnery – vysvětleno s příklady

  2. Jak používat obrázky, kontejnery a soubory Docker do hloubky

  3. Jak používat Docker Compose

  1. Jak připojit kontejnery Docker

  2. Jak používat příkaz Docker Inspect

  3. Úvod do Docker Containers

  1. Co je Docker (a Linux kontejnery?)

  2. Porttainer:Snadno použitelné gui pro spouštění a získávání kontejnerů dokovacích stanic

  3. Jak vypsat Docker kontejnery