Možné

Jak zastavit používání všech kontejnerů Docker pomocí Ansible

Jak zastavit používání všech kontejnerů Docker pomocí Ansible
Ansible má mnoho modulů pro automatizaci vašeho hostitele Docker, kontejnerů, svazků, sítí atd. Pokud chcete zastavit spuštěné kontejnery Dockeru, můžete to udělat také.

V tomto článku vám ukážu, jak zastavit konkrétní kontejner Dockeru. Také vám ukážu, jak zastavit všechny spuštěné kontejnery Dockeru nebo všechny kontejnery Dockeru s konkrétním obrázkem Dockeru pomocí Ansible. Pojďme tedy začít.

Předpoklady:

Chcete-li vyzkoušet příklady tohoto článku,

1) Musíte mít ve svém počítači nainstalovanou aplikaci Ansible.
2) Musíte mít v počítači nainstalovaný Docker nebo vzdáleného hostitele Ubuntu.
3) Na hostiteli Docker musíte mít nainstalovanou knihovnu Python Docker.
4) Musíte nakonfigurovat hostitele Dockeru pro automatizaci Ansible.

POZNÁMKA: Hostitel Docker je počítač, ve kterém máte nainstalovaný Docker.

Existuje mnoho článků o LinuxHint věnovaných instalaci Ansible a konfiguraci hostitelů pro automatizaci Ansible a instalaci Dockeru. V případě potřeby je můžete zkontrolovat.

Vytvoření adresáře projektu:

Aby byly všechny soubory a adresáře, které v tomto článku vytváříme, uspořádané, je dobré vytvořit adresář projektu.

Chcete-li vytvořit adresář projektu docker1 / ve svém aktuálním pracovním adresáři spusťte následující příkaz:

$ mkdir -pv docker1 / příručky

Nyní přejděte na docker1 / adresář projektu takto:

$ cd docker1 /

Konfigurace Ansible pro vzdálenou automatizaci hostitele Docker:

Pokud máte Docker nainstalovaný na vzdáleném hostiteli Ubuntu, kterého chcete automatizovat pomocí Ansible, pak je tato část pro vás.

Nejprve vytvořte Ansible inventární soubor hostitelé s následujícím příkazem:

$ nano hostitelé

Nyní přidejte adresu IP nebo název DNS vašeho hostitele Docker do hostitelé soubor inventáře následujícím způsobem.

[přístavní dělník]
vm4.nodekite.com

V mém případě je název DNS mého hostitele Ubuntu Docker vm4.nodekite.com. Bude to pro vás jiné. Nezapomeňte jej tedy podle potřeby vyměnit.

Až budete hotovi, stiskněte + X následován Y a uložit hostitelé soubor.

Nyní vytvořte konfigurační soubor Ansible zodpovědný.srov jak následuje:

$ nanoodpovědný.srov

Nyní zadejte následující řádky do pole zodpovědný.srov konfigurační soubor.

[přístavní dělník]
vm4.nodekite.com

Až budete hotovi, stiskněte + X následován Y a uložit zodpovědný.srov soubor.

Nyní zkontrolujte, zda můžete pomocí vzdáleného hostitele Dockeru ze svého počítače provést ping pomocí následujícího příkazu:

$ ansible vše -u ansible -m ping

Jak vidíte, můžu provést ping na vzdáleného hostitele Dockeru.

Jak vidíte, mám Docker 19.03.11 nainstalován na mém vzdáleném hostiteli Ubuntu Docker.

Nyní musíte mít na svém vzdáleném hostiteli Dockeru nainstalovanou knihovnu Dockeru Pythonu, aby moduly Docker docker fungovaly. V tomto článku používám Ubuntu. To je tedy to, o čem pojednám.

Chcete-li nainstalovat knihovnu Python Docker na vzdáleného hostitele Docker (Ubuntu), vytvořte novou příručku Ansible install_docker_python_lib.yaml v knihy o hře / adresář takto:

$ nano playbooks / install_docker_python_lib.yaml

Nyní zadejte následující řádky do pole install_docker_python_lib.yaml soubor.

- hostitelé: ukotvitelný panel
uživatel: odpovědný
stát se: Pravda
úkoly:
- name: Ujistěte se, že je nainstalován balíček python3-docker
výstižný:
název: python3-docker
stav: přítomen
update_cache: Pravda

Až budete hotovi, stiskněte + X následován Y a uložit install_docker_python_lib.yaml soubor.

Nyní spusťte install_docker_python_lib.yaml playbook takto:

$ ansible-playbook playbooks / install_docker_python_lib.yaml

Příručka by se měla úspěšně spustit a nainstaluje knihovnu Python Docker na vzdáleného hostitele Docker.

Konfigurace Ansible pro automatizaci místního hostitele Docker:

Pokud máte Docker nainstalovaný na hostiteli, kde máte nainstalovaný Ansible, a chcete jej automatizovat pomocí Ansible, pak je tato část pro vás.

Nejprve vytvořte nový scénář hry Ansible install_docker_python_lib.yaml v knihy o hře / adresář takto:

$ nano playbooks / install_docker_python_lib.yaml

Nyní zadejte následující řádky do pole install_docker_python_lib.yaml soubor.

- hostitelé: localhost
připojení: místní
uživatel: shovon
stát se: Pravda
úkoly:
- name: Ujistěte se, že je nainstalován balíček python3-docker
výstižný:
název: python3-docker
stav: přítomen
update_cache: Pravda

Tady linka uživatel: shovon sady šovon jako uživatel, který bude úkoly provádět. Bude to pro vás jiné. Nezapomeňte tedy změnit své přihlašovací uživatelské jméno.

Přihlašovací uživatelské jméno hostitele Dockeru najdete pomocí následujícího příkazu:

$ whoami

Až budete hotovi, stiskněte + X následován Y a uložit install_docker_python_lib.yaml soubor.

Nyní spusťte install_docker_python_lib.yaml playbook takto:

$ ansible-playbook --ask-pass --ask-become-pass
playbooks / install_docker_python_lib.yaml

Ansible vás požádá o přihlašovací heslo uživatele, kterého jste uvedli v příručce. Zadejte přihlašovací heslo a stiskněte .

Ansible vás požádá také o heslo BECOME / sudo. Mělo by to být stejné heslo jako vaše přihlašovací heslo. Takže nechte prázdné a stiskněte .

Playbook by se měl spustit. Dokončení může chvíli trvat.

V tomto okamžiku by hrací kniha měla být úspěšná a měla by být nainstalována knihovna Python Docker.

Nezbytné úpravy příruček:

V závislosti na tom, zda spravujete kontejnery Dockeru na místním hostiteli Dockeru nebo vzdáleném hostiteli Dockeru, musíte odpovídajícím způsobem upravit své příručky.

V dalších částech tohoto článku spustím ukázkové příručky na vzdáleném hostiteli Docker. Všechny příručky tedy budou začínat následujícími řádky:

- hostitelé: ukotvitelný panel
uživatel: odpovědný
úkoly:

Pokud chcete spouštět příručky na místním hostiteli Docker, ujistěte se, že příručky místo toho začínají následujícími řádky.

- hostitelé: localhost
připojení: místní
uživatel: shovon
stát se: Pravda
úkoly:

Poté vyměňte s úkoly, které chcete spustit, a uložte příručku stisknutím + X následován Y a .

Pokud se chystáte lokálně spravovat hostitele Dockeru pomocí Ansible, musíte spustit Anbook playbooky trochu jinak.

Playbook Ansible můžete spustit místně následujícím způsobem:

$ ansible-playbook --ask-pass --ask-become-pass

Nezapomeňte se změnit na cestu k vašemu souboru YAML ze hry Ansible playbook.

Zastavení kontejneru Docker:

Pokud máte spuštěný kontejner Docker a znáte ID nebo název kontejneru Docker, můžete tento kontejner Docker snadno zastavit pomocí Ansible.

V této části vám ukážu, jak to udělat.

Nejprve vytvořím Nginx (název obrázku) Docker kontejner http_server1 (název kontejneru) takto:

$ docker run -p 8080: 80 -d --name http_server1 nginx

Jak vidíte, kontejner Docker http_server1 běží.

$ docker ps

Chcete-li zastavit Docker kontejner http_server1 pomocí Ansible vytvořte nový scénář stop_container.yaml v knihy o hře / adresář takto:

$ nano playbooks / stop_container.yaml

Poté zadejte následující řádky do pole stop_container.yaml hrací kniha.

- hostitelé: ukotvitelný panel
uživatel: odpovědný
úkoly:
- name: Zastavte kontejner http_server1
docker_container:
název: http_server1
stav: zastaveno

Až budete hotovi, stiskněte + X následován Y a uložit stop_container.yaml soubor.

Tady, možné docker_container modul slouží k zastavení kontejneru Docker http_server1.

Nyní spusťte stop_container.yaml playbook s následujícím příkazem:

$ ansible-playbook playbooks / stop_container.yaml

Jak vidíte, kontejner Docker http_server1 již na mém vzdáleném hostiteli Docker nefunguje.

$ docker ps

Všechny kontejnery Dockeru (spuštěné, pozastavené, zastavené) můžete zobrazit pomocí následujícího příkazu:

$ docker ps - vše

Jak vidíte, zastavený Docker kontejner http_server1 je uveden.

Zastavení všech spuštěných kontejnerů Docker:

Pokud chcete zastavit všechny Docker kontejnery spuštěné na hostiteli Docker pomocí Ansible, pak je tato část pro vás.

Nejprve vytvořím 3 Docker kontejnery (server1, server2, a server3), abych je všechny mohl pomocí Ansible zastavit později.

Chcete-li vytvořit server1 Docker kontejner, spusťte následující příkaz:

$ docker run -p 8081: 80 -d --name server1 nginx

Chcete-li vytvořit server2 Docker kontejner, spusťte následující příkaz:

$ docker run -p 8082: 80 -d --name server2 nginx

Chcete-li vytvořit server3 Docker kontejner, spusťte následující příkaz:

$ docker run -p 8083: 80 -d --name server3 nginx

Jak vidíte, server1, server2, a server3 Na mém vzdáleném hostiteli Docker běží kontejnery Docker.

$ docker ps

Chcete-li zastavit všechny tyto Docker kontejnery, vytvořte nový playbook stop_all_container.yaml ve vašem knihy o hře / adresář takto:

$ nano playbooks / stop_all_container.yaml

Nyní zadejte následující řádky do pole stop_all_container.yaml soubor playbooku.

- hostitelé: ukotvitelný panel
uživatel: odpovědný
úkoly:
- name: Získejte seznam všech běžících kontejnerů
docker_host_info:
kontejnery: Pravda
registrovat: docker_info
- name: Zastavit všechny spuštěné kontejnery
docker_container:
name: 'položka.Názvy [0] | regex_replace ("^ /", "") '
stav: zastaveno
smyčka: 'docker_info.kontejnery '

Chcete-li uložit stop_all_container.yaml soubor, stiskněte + X následován Y a .

Zde jsem definoval 2 úkoly.

První úkol používá Ansible docker_host_info modul a získáte seznam všech spuštěných kontejnerů Docker a uloží jej do docker_info proměnná.

Druhý úkol prochází skrz docker_info.kontejnery array najde běžící názvy kontejnerů Docker a zastaví je jeden po druhém.

Nyní spusťte stop_all_container.yaml playbook s následujícím příkazem:

$ ansible-playbook playbooks / stop_all_container.yaml

Playbook by měl běžet úspěšně, jak vidíte na následujícím obrázku obrazovky.

Jak vidíte, na mém vzdáleném hostiteli Docker nejsou spuštěny žádné Docker kontejnery.

$ docker ps

Všechny kontejnery Dockeru (spuštěné, pozastavené, zastavené) můžete zobrazit pomocí následujícího příkazu:

$ docker ps - vše

Jak vidíte, zastavené Docker kontejnery server1, server2, a server3 jsou uvedeny.

Zastavit, aby všechny kontejnery Dockeru spouštěly konkrétní obrázek:

Pokud chcete zastavit, aby všechny kontejnery Dockeru spouštěly konkrétní image Dockeru, pak je tato část pro vás.

Nejprve vytvořme nějaké fiktivní kontejnery Dockeru.

Vytvořím 2 Docker kontejnery (nginx1 a nginx2) za použití Nginx Docker image a 2 Docker kontejnery (http1 a http2) za použití httpd Docker obrázek pro demonstraci.

Chcete-li vytvořit nginx1 Docker kontejner pomocí Nginx Docker image, spusťte následující příkaz:

$ docker run -d -p 8081: 80 - název nginx1 nginx

Chcete-li vytvořit nginx2 Docker kontejner pomocí Nginx Docker image, spusťte následující příkaz:

$ docker run -d -p 8082: 80 - název nginx2 nginx

Chcete-li vytvořit http1 Docker kontejner pomocí httpd Docker image, spusťte následující příkaz:

$ docker run -d -p 8091: 80 --name http1 httpd

Chcete-li vytvořit http2 Docker kontejner pomocí httpd Docker image, spusťte následující příkaz:

$ docker run -d -p 8092: 80 --name http2 httpd

Jak vidíte, nginx1, nginx2, http1, a http2 Na mém vzdáleném hostiteli Docker běží kontejnery Docker.

Chcete-li zastavit, aby všechny kontejnery Dockeru spouštěly konkrétní obrázek Dockeru (řekněme, nginx), vytvořte nový Docker playbook stop_all_image_containers.yaml v knihy o hře / adresář takto:

$ nano playbooks / stop_all_image_containers.yaml

Nyní zadejte následující řádky do pole stop_all_image_containers.yaml soubor.

- hostitelé: ukotvitelný panel
uživatel: odpovědný
úkoly:
- name: Získejte seznam všech běžících kontejnerů
docker_host_info:
kontejnery: Pravda
registrovat: docker_info
- name: Zastavte spuštění všech kontejnerů s obrázkem nginx
docker_container:
name: 'položka.Názvy [0] | regex_replace ("^ /", "") '
stav: zastaveno
kdy: položka.Obrázek == 'nginx'
smyčka: 'docker_info.kontejnery '

Až budete hotovi, stiskněte + X následován Y a uložit stop_all_image_containers.yaml soubor.

Zde jsem přidal 2 úkoly.

První úkol používá Ansible docker_host_info modul a získáte seznam všech spuštěných kontejnerů Docker a uloží jej do docker_info proměnná.

Druhý úkol prochází skrz docker_info.kontejnery array najde spuštěné názvy kontejnerů Docker a spustí docker_container modul pro každý spuštěný kontejner, pouze pokud je název obrázku kontejneru Nginx. Potom zastaví uzavřené kontejnery Dockeru.

Ve druhém úkolu se pomocí následujícího řádku zkontroluje, zda je v kontejneru Docker spuštěn Nginx obraz. Pokud chcete, můžete jej změnit na jiný název obrázku Dockeru.

Nyní spusťte stop_all_image_containers.yaml playbook takto:

$ ansible-playbook playbooks / stop_all_image_containers.yaml

Jak vidíte, pouze Nginx kontejnery (nginx1 a nginx2) jsou upraveny (zastaveny). The httpd kontejnery (http1 a http2) jsou přeskočeny.

Jak vidíte, ne Nginx Na mém vzdáleném hostiteli Docker běží kontejnery Docker. Pouze httpd Docker kontejnery (http1 a http2) běží.

$ docker ps

Všechny kontejnery Dockeru (spuštěné, pozastavené, zastavené) můžete zobrazit pomocí následujícího příkazu:

$ docker ps - vše

Jak vidíte, zastavené Docker kontejnery nginx1 a nginx2 jsou uvedeny.

Závěr:

V tomto článku jsem vám ukázal, jak zastavit běžící kontejner Dockeru, všechny kontejnery Dockeru s konkrétním obrázkem Dockeru a všechny běžící kontejnery Dockeru vašeho hostitele Dockeru. K tomu jsem použil Ansible docker_container a docker_host_info moduly v tomto článku.

Další informace o těchto modulech najdete na následujících oficiálních stránkách dokumentace Ansible.

[1] docker_container - Správa kontejnerů docker
[2] docker_host_info - Načte fakta o hostiteli ukotvitelného panelu a seznamy objektů služeb

Jak změnit levé a pravé tlačítko myši na počítači se systémem Windows 10
Je úplnou normou, že všechna zařízení počítačových myší jsou ergonomicky navržena pro praváky. K dispozici jsou však myší zařízení, která jsou speciál...
Emulace kliknutí myší vznášením pomocí myši Clickless Mouse ve Windows 10
Používání myši nebo klávesnice ve špatném držení těla nadměrného používání může mít za následek mnoho zdravotních problémů, včetně napětí, syndromu ka...
Přidejte gesta myši do Windows 10 pomocí těchto bezplatných nástrojů
V posledních letech se počítače a operační systémy značně vyvinuly. Bývaly doby, kdy uživatelé museli procházet správci souborů pomocí příkazů. Stejně...