Jak zatrzymać wszystkie kontenery Docker za pomocą Ansible

Jak zatrzymać wszystkie kontenery Docker za pomocą Ansible
Ansible ma wiele modułów do automatyzacji hosta Dockera, kontenerów, woluminów, sieci itp. Jeśli chcesz zatrzymać działające kontenery Docker, możesz to zrobić.

W tym artykule pokażę ci, jak zatrzymać konkretny kontener Docker. Pokażę również, jak zatrzymać wszystkie działające kontenery Docker lub wszystkie kontenery Docker z użyciem określonego obrazu Docker za pomocą Ansible. Więc zacznijmy.

Wymagania wstępne:

Jeśli chcesz wypróbować przykłady tego artykułu,

1) Musisz mieć zainstalowany na komputerze Ansible.
2) Musisz mieć Docker zainstalowany na komputerze lub zdalnym hostu Ubuntu.
3) Musisz mieć zainstalowaną bibliotekę Python Docker na swoim hoście Docker.
4) Musisz skonfigurować host Docker dla ANSIBLE Automation.

NOTATKA: Docker Host to komputer, na którym masz zainstalowany Docker.

Istnieje wiele artykułów na temat Linuxhint poświęconych instalacji ansible i konfiguracji hostów do automatyzacji ansible i instalacji Dockera. Możesz je sprawdzić w razie potrzeby.

Tworzenie katalogu projektu:

Aby zachować wszystkie pliki i katalog, które będziemy tworzyć w tym artykule, dobrym pomysłem jest utworzenie katalogu projektu.

Aby utworzyć katalog projektu Docker1/ W obecnym katalogu roboczym uruchom następujące polecenie:

$ mkdir -pv docker1/podręczniki

Teraz przejdź do Docker1/ Katalog projektu w następujący sposób:

$ CD Docker1/

Konfigurowanie ansible dla zdalnego automatyzacji hosta Docker:

Jeśli masz zainstalowany Docker na zdalnym hoście Ubuntu, który chcesz zautomatyzować za pomocą ansible, ta sekcja jest dla Ciebie.

Najpierw utwórz plik zapasowy Ansible zastępy niebieskie Z następującym poleceniem:

$ nano gospodarze

Teraz dodaj adres IP lub nazwę DNS swojego hosta Dockera zastępy niebieskie' Plik zapasowy w następujący sposób.

[doker]
VM4.Nodekite.com

W moim przypadku nazwa DNS mojego hosta Dockera Ubuntu to VM4.Nodekite.com. Będzie dla Ciebie inaczej. Pamiętaj, aby wymienić go w razie potrzeby.

Po zakończeniu naciśnij+ X śledzony przez Y I Aby uratować zastępy niebieskie plik.

Teraz utwórz plik konfiguracyjny Ansible Ansible.CFG następująco:

$ nano ansible.CFG

Teraz wpisz następujące wiersze w Ansible.CFG plik konfiguracyjny.

[doker]
VM4.Nodekite.com

Po zakończeniu naciśnij+ X śledzony przez Y I Aby uratować Ansible.CFG plik.

Teraz sprawdź, czy możesz pingować hosta Docker z komputera z następującym poleceniem:

$ ansible all -u ansible -m ping

Jak widać, mogę pingować mojego zdalnego hosta dokera.

Jak widać, mam dokera 19.03.11 Zainstalowane na moim zdalnym hoście Docker Ubuntu.

Teraz musisz mieć zainstalowaną bibliotekę Python Docker na swoim zdalnym hoście Docker dla modułów Docker Ansible. W tym artykule używam Ubuntu. Więc to będę omówił.

Aby zainstalować bibliotekę Python Docker na swoim zdalnym hoście Docker (Ubuntu), utwórz nowy poradnik Ansible install_docker_python_lib.Yaml w podręczniki/ katalog w następujący sposób:

$ Nano Playbooks/instalt_docker_python_lib.Yaml

Teraz wpisz następujące wiersze w install_docker_python_lib.Yaml plik.

- Gospodarze: Docker
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Upewnij się, że pakiet Python3-Docker jest zainstalowany
trafny:
Nazwa: Python3-Docker
Stan: obecny
aktualizacja_cache: true

Po zakończeniu naciśnij+ X śledzony przez Y I Aby uratować install_docker_python_lib.Yaml plik.

Teraz uruchom install_docker_python_lib.Yaml Playbook w następujący sposób:

$ Ansible-Playbook Playbooks/install_docker_python_lib.Yaml

Podręcznik powinien działać pomyślnie i zainstaluje bibliotekę Python Docker na twoim hoście Docker zdalnym.

Konfigurowanie ansible dla lokalnego hosta Docker Automation:

Jeśli masz zainstalowany Docker na hoście, w którym zainstalowałeś Ansible i chcesz go zautomatyzować za pomocą ansible, wówczas ta sekcja jest dla Ciebie.

Najpierw stwórz nowy poradnik Ansible install_docker_python_lib.Yaml w podręczniki/ katalog w następujący sposób:

$ Nano Playbooks/instalt_docker_python_lib.Yaml

Teraz wpisz następujące wiersze w install_docker_python_lib.Yaml plik.

- Gospodarze: Localhost
Połączenie: lokalny
Użytkownik: Shovon
staje się prawdą
Zadania:
- Nazwa: Upewnij się, że pakiet Python3-Docker jest zainstalowany
trafny:
Nazwa: Python3-Docker
Stan: obecny
aktualizacja_cache: true

Tutaj linia Użytkownik: Shovon zestawy Shovon Jako użytkownik, który będzie wykonywał zadania. Będzie dla Ciebie inaczej. Pamiętaj, aby zmienić to na swoją nazwę użytkownika logowania.

Z logowania nazwa użytkownika swojego hosta Dockera za pomocą następującego polecenia:

$ whoami

Po zakończeniu naciśnij+ X śledzony przez Y I Aby uratować install_docker_python_lib.Yaml plik.

Teraz uruchom install_docker_python_lib.Yaml Playbook w następujący sposób:

$ ansible-playbook --ask-pats-bec-become-patas
Playbooks/install_docker_python_lib.Yaml

Ansible poprosi Cię o hasło logowania dla użytkownika określonego w podręczniku. Wpisz zaloguj hasło i naciśnij .

Ansible poprosi cię również o hasło do stania się/sudo. Powinno to być to samo hasło, co hasło logowania. Więc zostaw to puste i naciśnij .

Podręcznik powinien zacząć działać. Ukończenie może potrwać trochę czasu.

W tym momencie podręcznik powinien odnieść sukces i należy zainstalować bibliotekę Python Docker.

Dokonanie niezbędnej regulacji do podręczników:

W zależności od tego, czy zarządzasz kontenerami Docker na lokalnym hoście Docker, czy zdalnym hostie Docker, musisz odpowiednio dostosować swoje podręczniki.

Z następnych sekcji tego artykułu będę uruchomić przykładowe podręczniki na zdalnym hoście Docker. Tak więc wszystkie podręczniki zaczną się od następujących wierszy:

- Gospodarze: Docker
Użytkownik: Ansible
Zadania:

Jeśli chcesz uruchomić podręczniki na lokalnym hoście Docker, upewnij się, że zamiast tego podręczniki zaczynają się od następujących wierszy.

- Gospodarze: Localhost
Połączenie: lokalny
Użytkownik: Shovon
staje się prawdą
Zadania:

Następnie wymień z zadaniami, które chcesz uruchomić i zapisać podręcznik, naciskając + X śledzony przez Y I .

Musisz także nieco inaczej uruchomić Playbooks Ansible, jeśli zamierzasz lokalnie zarządzać hostem dokera.

Możesz uruchomić podręcznik Ansible lokalnie w następujący sposób:

$ ansible-playbook --ask-pats-bec-become-patas

Pamiętaj, aby zmienić na ścieżkę pliku Yaml Playbook ANSable.

Zatrzymanie kontenera Docker:

Jeśli masz działający kontener Docker i znasz identyfikator lub nazwę kontenera Docker, możesz łatwo zatrzymać kontenera Docker za pomocą Ansible.

W tej sekcji pokażę ci, jak to zrobić.

Najpierw zamierzam stworzyć Nginx (Nazwa obrazu) kontener Docker http_server1 (Nazwa kontenera) w następujący sposób:

$ Docker Run -p 8080: 80 -d --Name http_server1 nginx

Jak widać, kontener Docker http_server1 biegnie.

$ Docker Ps

Aby zatrzymać kontener Docker http_server1 Korzystając z Ansible, stwórz nowy podręcznik Stop_Container.Yaml w podręczniki/ katalog w następujący sposób:

$ Nano Playbooks/Stop_Container.Yaml

Następnie wpisz następujące wiersze w Stop_Container.Yaml podręcznik.

- Gospodarze: Docker
Użytkownik: Ansible
Zadania:
- Nazwa: Zatrzymaj kontener http_server1
Docker_Container:
Nazwa: http_server1
Stan: Zatrzymany

Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować Stop_Container.Yaml plik.

Tutaj, ansible Docker_Container Moduł służy do zatrzymania kontenera Docker http_server1.

Teraz uruchom Stop_Container.Yaml Playbook z następującym poleceniem:

$ Ansible-Playbook Playbooks/Stop_Container.Yaml

Jak widać, kontener Docker http_server1 nie działa już na moim zdalnym hoście Docker.

$ Docker Ps

Możesz wymienić wszystkie kontenery Docker (działające, zatrzymane, zatrzymane) za pomocą następującego polecenia:

$ Docker PS -wszystko

Jak widać, zatrzymany kontener Docker http_server1 znajduje się na liście.

Zatrzymanie wszystkich kontenerów Docker:

Jeśli chcesz zatrzymać wszystkie kontenery Docker działające na hosta Docker za pomocą ansible, ta sekcja jest dla Ciebie.

Najpierw utworzę 3 kontenery Docker (serwer 1, serwer2, I serwer3), abym mógł ich zatrzymać wszystkie za pomocą ansible później.

Aby stworzyć serwer 1 Kontener dokera, uruchom następujące polecenie:

$ Docker Run -p 8081: 80 -D --Name Server1 nginx

Aby stworzyć serwer2 Kontener dokera, uruchom następujące polecenie:

$ Docker Run -p 8082: 80 -D --Name Server2 nginx

Aby stworzyć serwer3 Kontener dokera, uruchom następujące polecenie:

$ Docker Run -p 8083: 80 -D --Name Server3 nginx

Jak widać, serwer 1, serwer2, I serwer3 Kontenery Docker działają na moim zdalnym hoście Docker.

$ Docker Ps

Aby zatrzymać wszystkie te kontenery Docker, utwórz nowy podręcznik stop_all_container.Yaml w Twoim podręczniki/ katalog w następujący sposób:

$ Nano Playbooks/Stop_All_Container.Yaml

Teraz wpisz następujące wiersze w stop_all_container.Yaml Plik podręcznika.

- Gospodarze: Docker
Użytkownik: Ansible
Zadania:
- Nazwa: Zdobądź listę wszystkich działających kontenerów
Docker_Host_Info:
Kontenery: prawda
Zarejestruj się: Docker_info
- Nazwa: Zatrzymaj wszystkie działające kontenery
Docker_Container:
Nazwa: 'item.Nazwy [0] | Regex_replace ("^/", "") '
Stan: Zatrzymany
pętla: 'docker_info.kontenery '

Aby uratować stop_all_container.Yaml Plik, naciśnij + X śledzony przez Y I .

Tutaj zdefiniowałem 2 zadania.

Pierwsze zadanie wykorzystuje Ansible Docker_Host_Info moduł, aby uzyskać listę wszystkich działających kontenerów Docker i przechowuje ją w Docker_info zmienny.

Drugi zadanie pętli przez Docker_info.pojemniki Array znajduje nazwy Conten Docker Container i zatrzymuje je jeden po drugim.

Teraz uruchom stop_all_container.Yaml Playbook z następującym poleceniem:

$ Ansible-Playbook Playbooks/Stop_All_Container.Yaml

Playbook powinien działać pomyślnie, jak widać na zrzucie ekranu poniżej.

Jak widać, na moim zdalnym hoście Docker nie ma żadnych kontenerów Docker.

$ Docker Ps

Możesz wymienić wszystkie kontenery Docker (działające, zatrzymane, zatrzymane) za pomocą następującego polecenia:

$ Docker PS -wszystko

Jak widać, zatrzymane kontenery Docker serwer 1, serwer2, i serwer3 są wymienione.

Zatrzymaj wszystkie kontenery Docker z określonym obrazem:

Jeśli chcesz zatrzymać wszystkie kontenery Docker działające określony obraz Docker, ta sekcja jest dla Ciebie.

Najpierw stwórzmy kilka manekinów.

Utworzę 2 kontenery Docker (Nginx1 I Nginx2) używając Nginx Obraz Docker i 2 kontenery Docker (Http1 I HTTP2) używając httpd Zdjęcie dokera do demonstracji.

Aby stworzyć Nginx1 Kontener dokujący za pomocą Nginx Obraz dokera, uruchom następujące polecenie:

$ Docker Run -d -p 8081: 80 -Nazwa nginx1 nginx

Aby stworzyć Nginx2 Kontener dokujący za pomocą Nginx Obraz dokera, uruchom następujące polecenie:

$ Docker Run -d -p 8082: 80 -Nazwa nginx2 nginx

Aby stworzyć Http1 Kontener dokujący za pomocą httpd Obraz dokera, uruchom następujące polecenie:

$ Docker Run -d -p 8091: 80 -Nazwa http1 httpd

Aby stworzyć HTTP2 Kontener dokujący za pomocą httpd Obraz dokera, uruchom następujące polecenie:

$ Docker Run -d -p 8092: 80 -Nazwa http2 httpd

Jak widać, Nginx1, Nginx2, Http1, I HTTP2 Kontenery Docker działają na moim zdalnym hoście Docker.

Aby zatrzymać wszystkie kontenery Docker z użyciem konkretnego obrazu Dockera (powiedzmy, nginx), Utwórz nowy podręcznik Docker stop_all_image_containers.Yaml w podręczniki/ katalog w następujący sposób:

$ Nano Playbooks/stop_all_image_containers.Yaml

Teraz wpisz następujące wiersze w stop_all_image_containers.Yaml plik.

- Gospodarze: Docker
Użytkownik: Ansible
Zadania:
- Nazwa: Zdobądź listę wszystkich działających kontenerów
Docker_Host_Info:
Kontenery: prawda
Zarejestruj się: Docker_info
- Nazwa: Zatrzymaj wszystkie pojemniki z obrazem Nginx
Docker_Container:
Nazwa: 'item.Nazwy [0] | Regex_replace ("^/", "") '
Stan: Zatrzymany
Kiedy: przedmiot.Obraz == 'nginx'
pętla: 'docker_info.kontenery '

Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować stop_all_image_containers.Yaml plik.

Tutaj dodałem 2 zadania.

Pierwsze zadanie wykorzystuje Ansible Docker_Host_Info moduł, aby uzyskać listę wszystkich działających kontenerów Docker i przechowuje ją w Docker_info zmienny.

Drugi zadanie pętli przez Docker_info.pojemniki Array znajduje nazwy Conten Docker Container i uruchamia Docker_Container moduł dla każdego działającego kontenera tylko wtedy, gdy nazwa obrazu kontenera jest Nginx. Następnie zatrzymuje dopasowane kontenery Docker.

W drugim zadaniu używany jest następujący wiersz do sprawdzenia, czy kontener Docker działa Nginx obraz. Możesz zmienić go na inną nazwę obrazu Docker, jeśli chcesz.

Teraz uruchom stop_all_image_containers.Yaml Playbook w następujący sposób:

$ Ansible-Playbook Playbooks/stop_all_image_containers.Yaml

Jak widać, tylko Nginx kontenery (Nginx1 I Nginx2) są modyfikowane (zatrzymane). httpd kontenery (Http1 I HTTP2) są pomijane.

Jak widać, nie Nginx Kontenery Docker działają na moim zdalnym hoście Docker. Tylko httpd Kontenery Docker (Http1 I HTTP2) biegnie.

$ Docker Ps

Możesz wymienić wszystkie kontenery Docker (działające, zatrzymane, zatrzymane) za pomocą następującego polecenia:

$ Docker PS -wszystko

Jak widać, zatrzymane kontenery Docker Nginx1 i Nginx2 są wymienione.

Wniosek:

W tym artykule pokazałem, jak zatrzymać działające kontener Docker, wszystkie kontenery Docker działające określony obraz Docker i wszystkie działające kontenery Docker twojego hosta Docker. Aby to zrobić, użyłem ansible Docker_Container I Docker_Host_Info moduły w tym artykule.

Aby dowiedzieć się więcej o tych modułach, odwiedź następujące oficjalne strony dokumentacji Ansible.

[1] Docker_Container - Zarządzaj kontenerami Docker
[2] Docker_host_info - Odzwierciedla fakty o hostie Docker i listach obiektów Usług