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]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]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.YamlTeraz wpisz następujące wiersze w install_docker_python_lib.Yaml plik.
- Gospodarze: DockerPo 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.YamlPodręcznik powinien działać pomyślnie i zainstaluje bibliotekę Python Docker na twoim hoście Docker zdalnym.
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.YamlTeraz wpisz następujące wiersze w install_docker_python_lib.Yaml plik.
- Gospodarze: LocalhostTutaj 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-patasAnsible 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: DockerJeś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: LocalhostNastę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-patasPamię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 nginxJak 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.YamlNastępnie wpisz następujące wiersze w Stop_Container.Yaml podręcznik.
- Gospodarze: DockerPo 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.YamlJak 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.YamlTeraz wpisz następujące wiersze w stop_all_image_containers.Yaml plik.
- Gospodarze: DockerPo 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.YamlJak 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 PsMożesz wymienić wszystkie kontenery Docker (działające, zatrzymane, zatrzymane) za pomocą następującego polecenia:
$ Docker PS -wszystkoJak 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