Synlig

Sådan stoppes alle dockercontainere ved hjælp af Ansible

Sådan stoppes alle dockercontainere ved hjælp af Ansible
Ansible har mange moduler til automatisering af din Docker-vært, containere, diskenheder, netværk osv. Hvis du vil stoppe dine kørende Docker-containere, kan du også gøre det.

I denne artikel vil jeg vise dig, hvordan du stopper en bestemt Docker-container. Jeg vil også vise dig, hvordan du stopper alle kørende Docker-containere eller alle Docker-containere, der kører et specifikt Docker-billede ved hjælp af Ansible. Så lad os komme i gang.

Forudsætninger:

Hvis du vil prøve eksemplerne på denne artikel,

1) Du skal have Ansible installeret på din computer.
2) Du skal have Docker installeret på din computer eller en ekstern Ubuntu-vært.
3) Du skal have Python Docker-bibliotek installeret på din Docker-vært.
4) Du skal konfigurere Docker-værten til Ansible-automatisering.

BEMÆRK: Docker vært er den computer, hvor du har installeret Docker.

Der er mange artikler om LinuxHint dedikeret til installation af Ansible og konfigurering af værter til Ansible-automatisering og installation af Docker. Du kan tjekke dem ud, hvis det er nødvendigt.

Oprettelse af en projektmappe:

For at holde alle de filer og bibliotek, vi opretter i denne artikel, organiseret, er det en god ide at oprette en projektmappe.

For at oprette et projektmappe docker1 / i din nuværende arbejdsmappe skal du køre følgende kommando:

$ mkdir -pv docker1 / playbooks

Naviger nu til docker1 / projektmappe som følger:

$ cd docker1 /

Konfiguration af Ansible til Remote Docker Host Automation:

Hvis du har Docker installeret på en ekstern Ubuntu-vært, som du vil automatisere ved hjælp af Ansible, er dette afsnit noget for dig.

Opret først en Ansible beholdningsfil værter med følgende kommando:

$ nano værter

Tilføj nu din Docker-værts IP-adresse eller DNS-navn i værter opgørelsesfil som følger.

[docker]
vm4.nodekite.com

I mit tilfælde er DNS-navnet på min Ubuntu Docker-vært vm4.nodekite.com. Det vil være anderledes for dig. Så sørg for at udskifte det efter behov.

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde værter fil.

Opret nu en Ansible-konfigurationsfil ansible.cfg som følger:

$ nano ansible.cfg

Skriv nu de følgende linjer i ansible.cfg konfigurationsfil.

[docker]
vm4.nodekite.com

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde ansible.cfg fil.

Kontroller nu, om du kan pinge den eksterne Docker-vært fra din computer med følgende kommando:

$ ansible all -u ansible -m ping

Som du kan se, kan jeg pinge til min eksterne Docker-vært.

Som du kan se, har jeg Docker 19.03.11 installeret på min eksterne Ubuntu Docker-vært.

Nu skal du have Python Docker-bibliotek installeret på din eksterne Docker-vært for at Ansible docker-moduler kan fungere. I denne artikel bruger jeg Ubuntu. Så dette er hvad jeg vil dække.

For at installere Python Docker-biblioteket på din eksterne Docker-vært (Ubuntu) skal du oprette en ny Ansible playbook install_docker_python_lib.yaml i legebøger / katalog som følger:

$ nano playbooks / install_docker_python_lib.yaml

Skriv nu de følgende linjer i install_docker_python_lib.yaml fil.

- værter: docker
bruger: ansible
blive: Sandt
opgaver:
- navn: Sørg for, at python3-docker-pakke er installeret
apt:
navn: python3-docker
tilstand: til stede
update_cache: Sandt

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde install_docker_python_lib.yaml fil.

Kør nu install_docker_python_lib.yaml playbook som følger:

$ ansible-playbook playbooks / install_docker_python_lib.yaml

Playbook'en skal køre med succes, og den installerer Python Docker-biblioteket på din eksterne Docker-vært.

Konfiguration af Ansible for Local Docker Host Automation:

Hvis du har Docker installeret på den vært, hvor du har Ansible installeret, og du vil automatisere det ved hjælp af Ansible, så er dette afsnit noget for dig.

Opret først en ny Ansible playbook install_docker_python_lib.yaml i legebøger / katalog som følger:

$ nano playbooks / install_docker_python_lib.yaml

Skriv nu de følgende linjer i install_docker_python_lib.yaml fil.

- værter: localhost
forbindelse: lokal
bruger: shovon
blive: Sandt
opgaver:
- navn: Sørg for, at python3-docker-pakke er installeret
apt:
navn: python3-docker
tilstand: til stede
update_cache: Sandt

Her er linjen bruger: shovon sæt shovon som den bruger, der skal udføre opgaverne. Det vil være anderledes for dig. Så sørg for at ændre det til dit login-brugernavn.

Du kan finde login-brugernavnet på din Docker-vært med følgende kommando:

$ whoami

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde install_docker_python_lib.yaml fil.

Kør nu install_docker_python_lib.yaml playbook som følger:

$ ansible-playbook --ask-pass - spørge-blive-pass
playbooks / install_docker_python_lib.yaml

Ansible vil bede dig om adgangskoden til den bruger, du har angivet i playbogen. Indtast loginadgangskoden, og tryk på .

Ansible vil også bede dig om BECOME / sudo-adgangskoden. Det skal være den samme adgangskode som din loginadgangskode. Så lad det være tomt, og tryk på .

Spilbogen skal begynde at køre. Det kan tage et stykke tid at gennemføre.

På dette tidspunkt skal playbook være vellykket, og Python Docker-biblioteket skal installeres.

Sådan foretages den nødvendige justering af playbøger:

Afhængigt af om du administrerer Docker-containere på din lokale Docker-vært eller en ekstern Docker-vært, skal du justere dine playbøger i overensstemmelse hermed.

Fra de næste sektioner i denne artikel kører jeg eksemplerne på playbøger på en ekstern Docker-vært. Så alle playbooks starter med følgende linjer:

- værter: docker
bruger: ansible
opgaver:

Hvis du vil køre playbøgerne på din lokale Docker-vært, skal du sørge for, at playbooks starter med følgende linjer i stedet.

- værter: localhost
forbindelse: lokal
bruger: shovon
blive: Sandt
opgaver:

Udskift derefter med de opgaver, du vil køre, og gem playbook ved at trykke på + x efterfulgt af Y og .

Du skal også køre Ansible-playbøgerne lidt anderledes, hvis du administrerer en Docker-vært lokalt ved hjælp af Ansible.

Du kan køre en Ansible playbook lokalt som følger:

$ ansible-playbook --ask-pass - spørge-blive-pass

Sørg for at ændre til stien til din Ansible playbook YAML-fil.

Stoppe en Docker Container:

Hvis du har en kørende Docker-container, og du kender ID'eren eller navnet på Docker-containeren, kan du nemt stoppe den Docker-container ved hjælp af Ansible.

I dette afsnit vil jeg vise dig, hvordan du gør det.

Først skal jeg oprette en Nginx (billednavn) Docker-container http_server1 (containernavn) som følger:

$ docker køre -p 8080: 80 -d --navn http_server1 nginx

Som du kan se, Docker-containeren http_server1 løber.

$ docker ps

For at stoppe Docker-containeren http_server1 ved hjælp af Ansible, opret en ny playbook stop_container.yaml i legebøger / katalog som følger:

$ nano playbooks / stop_container.yaml

Indtast derefter de følgende linjer i stop_container.yaml playbook.

- værter: docker
bruger: ansible
opgaver:
- navn: Stop http_server1-containeren
docker_container:
navn: http_server1
tilstand: stoppet

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde stop_container.yaml fil.

Her det Ansible docker_container modul bruges til at stoppe Docker-containeren http_server1.

Kør nu stop_container.yaml playbook med følgende kommando:

$ ansible-playbook playbooks / stop_container.yaml

Som du kan se, Docker-containeren http_server1 kører ikke længere på min eksterne Docker-vært.

$ docker ps

Du kan liste alle Docker-containere (kører, pause, stoppet) med følgende kommando:

$ docker ps - alt

Som du kan se, den stoppede Docker-container http_server1 er opført.

Stop alle kørende Docker-containere:

Hvis du vil stoppe alle Docker-containere, der kører på din Docker-vært ved hjælp af Ansible, er dette afsnit noget for dig.

Først skal jeg oprette 3 Docker-containere (server1, server2, og server3) så jeg kan stoppe dem alle ved hjælp af Ansible senere.

At oprette server1 Docker-container, kør følgende kommando:

$ docker kør -p 8081: 80 -d --navn server1 nginx

At oprette server2 Docker-container, kør følgende kommando:

$ docker kør -p 8082: 80 -d --navn server2 nginx

At oprette server3 Docker-container, kør følgende kommando:

$ docker kør -p 8083: 80 -d --navn server3 nginx

Som du kan se, er server1, server2, og server3 Docker-containere kører på min eksterne Docker-vært.

$ docker ps

For at stoppe alle disse Docker-containere skal du oprette en ny playbook stop_all_container.yaml i din legebøger / katalog som følger:

$ nano playbooks / stop_all_container.yaml

Skriv nu de følgende linjer i stop_all_container.yaml playbook-fil.

- værter: docker
bruger: ansible
opgaver:
- navn: Få en liste over alle kørende containere
docker_host_info:
containere: Sandt
register: docker_info
- navn: Stop alle kørende containere
docker_container:
navn: 'item.Navne [0] | regex_replace ("^ /", "") '
tilstand: stoppet
loop: 'docker_info.containere '

For at gemme stop_all_container.yaml fil, skal du trykke på + x efterfulgt af Y og .

Her har jeg defineret to opgaver.

Den første opgave bruger Ansible docker_host_info modul for at få en liste over alle kørende Docker-containere og gemme den i docker_info variabel.

Den anden opgave løber gennem docker_info.containere array finder de kørende Docker-containernavne og stopper dem en efter en.

Kør nu stop_all_container.yaml playbook med følgende kommando:

$ ansible-playbook playbooks / stop_all_container.yaml

Playbook'en skal køre med succes, som du kan se på skærmbilledet nedenfor.

Som du kan se, er der ingen kørende Docker-containere på min eksterne Docker-vært.

$ docker ps

Du kan liste alle Docker-containere (kører, pauser, stoppet) med følgende kommando:

$ docker ps - alt

Som du kan se, stoppede Docker-containere server1, server2, og server3 er anført.

Stop alle dockercontainere, der kører et specifikt billede:

Hvis du vil stoppe alle Docker-containere, der kører et specifikt Docker-billede, er dette afsnit noget for dig.

Lad os først oprette nogle dummy Docker-containere.

Jeg opretter 2 Docker-containere (nginx1 og nginx2) bruger Nginx Docker-billede og 2 Docker-containere (http1 og http2) bruger httpd Docker-billede til demonstrationen.

At oprette nginx1 Docker-container ved hjælp af Nginx Docker-billede, kør følgende kommando:

$ docker kør -d -p 8081: 80 --navn nginx1 nginx

At oprette nginx2 Docker-container ved hjælp af Nginx Docker-billede, kør følgende kommando:

$ docker kør -d -p 8082: 80 --navn nginx2 nginx

At oprette http1 Docker-container ved hjælp af httpd Docker-billede, kør følgende kommando:

$ docker køre -d -p 8091: 80 --navn http1 httpd

At oprette http2 Docker-container ved hjælp af httpd Docker-billede, kør følgende kommando:

$ docker køre -d -p 8092: 80 --navn http2 httpd

Som du kan se, er nginx1, nginx2, http1, og http2 Docker-containere kører på min eksterne Docker-vært.

For at stoppe alle Docker-containere, der kører et specifikt Docker-billede (lad os sige, nginx), opret en ny Docker-playbog stop_all_image_containere.yaml i legebøger / katalog som følger:

$ nano playbooks / stop_all_image_containers.yaml

Skriv nu de følgende linjer i stop_all_image_containere.yaml fil.

- værter: docker
bruger: ansible
opgaver:
- navn: Få en liste over alle kørende containere
docker_host_info:
containere: Sandt
register: docker_info
- navn: Stop alle containere, der kører nginx-billede
docker_container:
navn: 'item.Navne [0] | regex_replace ("^ /", "") '
tilstand: stoppet
når: vare.Billede == 'nginx'
loop: 'docker_info.containere '

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde stop_all_image_containere.yaml fil.

Her har jeg tilføjet 2 opgaver.

Den første opgave bruger Ansible docker_host_info modul for at få en liste over alle kørende Docker-containere og gemme den i docker_info variabel.

Den anden opgave løber gennem docker_info.containere array finder de kørende Docker-containernavne og kører docker_container modul til hver kørende container kun, hvis containerens billednavn er Nginx. Derefter stopper det de matchede Docker-containere.

I den anden opgave bruges følgende linje til at kontrollere, om Docker-containeren kører Nginx billede. Du kan ændre det til et andet Docker-billednavn, hvis du vil.

Kør nu stop_all_image_containere.yaml playbook som følger:

$ ansible-playbook playbooks / stop_all_image_containers.yaml

Som du kan se, er kun den Nginx containere (nginx1 og nginx2) er ændret (stoppet). Det httpd containere (http1 og http2) springes over.

Som du kan se, nej Nginx Docker-containere kører på min eksterne Docker-vært. Kun den httpd Docker-containere (http1 og http2) løber.

$ docker ps

Du kan liste alle Docker-containere (kører, pauser, stoppet) med følgende kommando:

$ docker ps - alt

Som du kan se, stoppede Docker-containere nginx1 og nginx2 er anført.

Konklusion:

I denne artikel har jeg vist dig, hvordan du stopper en kørende Docker-container, alle Docker-containere, der kører et specifikt Docker-billede, og alle de kørende Docker-containere fra din Docker-vært. For at gøre det har jeg brugt Ansible docker_container og docker_host_info moduler i denne artikel.

For at lære mere om disse moduler skal du besøge følgende officielle Ansible-dokumentationssider.

[1] docker_container - Administrer dockercontainere
[2] docker_host_info - Henter fakta om docker vært og lister over objekter fra tjenesterne

HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...
Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...
Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...