Odgovorno

Kako ustaviti vse zabojnike Docker z uporabo programa Ansible

Kako ustaviti vse zabojnike Docker z uporabo programa Ansible
Ansible ima veliko modulov za avtomatizacijo vašega Docker gostitelja, vsebnikov, zvezkov, omrežij itd. Če želite ustaviti zagnane zabojnike Docker, lahko to storite tudi vi.

V tem članku vam bom pokazal, kako ustaviti določen Dockerjev vsebnik. Prav tako vam bom pokazal, kako ustaviti vse delujoče vsebnike Dockerja ali vse vsebnike Dockerja, ki izvajajo določeno sliko Dockerja, s pomočjo programa Ansible. Torej, začnimo.

Pogoji:

Če želite preizkusiti primere tega članka,

1) V računalniku mora biti nameščen Ansible.
2) V računalniku ali oddaljenem gostitelju Ubuntu mora biti nameščen Docker.
3) Na vašem gostitelju Docker mora biti nameščena knjižnica Python Docker.
4) Dockerjevega gostitelja morate konfigurirati za Ansible avtomatizacijo.

OPOMBA: Docker gostitelj je računalnik, v katerem je nameščen Docker.

V LinuxHintu je veliko člankov, namenjenih namestitvi programa Ansible in konfiguriranju gostiteljev za avtomatizacijo Ansible in namestitvi Dockerja. Po potrebi jih lahko preverite.

Ustvarjanje imenika projektov:

Če želite organizirati vse datoteke in imenike, ki jih bomo ustvarili v tem članku, je dobro ustvariti imenik projekta.

Če želite ustvariti imenik projekta docker1 / v trenutnem delovnem imeniku zaženite naslednji ukaz:

$ mkdir -pv docker1 / playbooks

Zdaj se pomaknite do docker1 / imenik projekta, kot sledi:

$ cd docker1 /

Konfiguriranje programa Ansible za oddaljeno avtomatizacijo gostitelja Docker:

Če imate Docker nameščen na oddaljenem gostitelju Ubuntu, ki ga želite avtomatizirati s pomočjo Ansible, potem je ta razdelek za vas.

Najprej ustvarite datoteko inventarja Ansible gostitelji z naslednjim ukazom:

$ nano gostitelji

Zdaj dodajte naslov IP ali ime DNS vašega gostitelja Docker v gostitelji ' spisek, kot sledi.

[docker]
vm4.nodekite.com

V mojem primeru je DNS ime mojega gostitelja Ubuntu Docker vm4.nodekite.com. Za vas bo drugače. Zato ga po potrebi zamenjajte.

Ko končate, pritisnite + X čemur sledi Y in shraniti gostitelji mapa.

Zdaj ustvarite konfiguracijsko datoteko Ansible ansible.prim kot sledi:

$ nano ansible.prim

Zdaj vnesite naslednje vrstice v ansible.prim konfiguracijska datoteka.

[docker]
vm4.nodekite.com

Ko končate, pritisnite + X čemur sledi Y in shraniti ansible.prim mapa.

Zdaj z naslednjim ukazom preverite, ali lahko v računalnik pingate oddaljenega gostitelja Dockerja:

$ ansible vse -u ansible -m ping

Kot lahko vidite, lahko pingam oddaljenega gostitelja Dockerja.

Kot lahko vidite, imam Docker 19.03.11 nameščen na mojem oddaljenem gostitelju Ubuntu Docker.

Zdaj morate imeti na oddaljenem gostitelju Docker nameščeno knjižnico Python Docker, da moduli docker Ansible delujejo. V tem članku uporabljam Ubuntu. Torej, to bom pokrival.

Če želite namestiti knjižnico Python Docker na oddaljenem gostiteljskem Dockerju (Ubuntu), ustvarite novo knjigo Ansible install_docker_python_lib.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / install_docker_python_lib.yaml

Zdaj vnesite naslednje vrstice v install_docker_python_lib.yaml mapa.

- gostitelji: docker
uporabnik: ansible
postati: Resnično
naloge:
- ime: Prepričajte se, da je nameščen paket python3-docker
primeren:
ime: python3-docker
stanje: prisotno
update_cache: True

Ko končate, pritisnite + X čemur sledi Y in shraniti install_docker_python_lib.yaml mapa.

Zdaj zaženite install_docker_python_lib.yaml playbook, kot sledi:

$ ansible-playbook playbooks / install_docker_python_lib.yaml

Knjigo iger bi bilo treba uspešno zagnati, na oddaljenem gostitelju Dockerja pa bo namestila knjižnico Python Docker.

Konfiguriranje programa Ansible za lokalno avtomatizacijo gostitelja Dockerja:

Če imate Docker nameščen na gostitelju, kjer ste namestili Ansible, in ga želite avtomatizirati s pomočjo Ansible, potem je ta razdelek za vas.

Najprej ustvarite novo knjigo Ansible install_docker_python_lib.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / install_docker_python_lib.yaml

Zdaj vnesite naslednje vrstice v install_docker_python_lib.yaml mapa.

- gostitelji: localhost
povezava: lokalna
uporabnik: shovon
postati: Resnično
naloge:
- ime: Zagotovite, da je nameščen paket python3-docker
primeren:
ime: python3-docker
stanje: prisotno
update_cache: True

Tukaj, črta uporabnik: shovon kompleti shovon kot uporabnik, ki bo izvrševal naloge. Za vas bo drugače. Torej, ne pozabite ga spremeniti v svoje uporabniško ime.

Uporabniško ime vašega gostitelja Docker lahko najdete z naslednjim ukazom:

$ whoami

Ko končate, pritisnite + X čemur sledi Y in shraniti install_docker_python_lib.yaml mapa.

Zdaj zaženite install_docker_python_lib.yaml playbook, kot sledi:

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

Ansible vas bo vprašal za geslo za prijavo uporabnika, ki ste ga navedli v knjigi iger. Vnesite geslo za prijavo in pritisnite .

Ansible vas bo vprašal tudi za POSTANI / sudo geslo. To mora biti isto geslo kot geslo za prijavo. Torej, pustite prazno in pritisnite .

Knjiga iger naj bi začela delovati. Dokončanje lahko traja nekaj časa.

Na tej točki bi morala biti igrana knjiga uspešna in nameščena knjižnica Python Docker.

Potrebne prilagoditve Playbooks:

Glede na to, ali upravljate vsebnike Dockerja na lokalnem gostitelju Docker ali oddaljenem gostitelju Docker, morate svoje igralne knjige ustrezno prilagoditi.

V naslednjih razdelkih tega članka bom zagnal primere iger na oddaljenem gostitelju Docker. Torej, vse knjige se bodo začele z naslednjimi vrsticami:

- gostitelji: docker
uporabnik: ansible
naloge:

Če želite knjige za igranje zagnati na lokalnem gostitelju Docker, se prepričajte, da se knjige začnejo z naslednjimi vrsticami.

- gostitelji: localhost
povezava: lokalna
uporabnik: shovon
postati: Resnično
naloge:

Nato zamenjajte z nalogami, ki jih želite zagnati, in shranite knjigo iger s pritiskom na + X čemur sledi Y in .

Tudi knjige iger Ansible morate zagnati nekoliko drugače, če boste lokalno upravljali gostitelja Dockerja z uporabo programa Ansible.

Lokalno knjigo Ansible lahko zaženete na naslednji način:

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

Prepričajte se, da se spremenite do poti do datoteke YAML v knjigi Ansible.

Zaustavitev zabojnika Docker:

Če imate zagnani vsebnik Docker in poznate ID ali ime vsebnika Docker, ga lahko preprosto ustavite z uporabo programa Ansible.

V tem poglavju vam bom pokazal, kako to storiti.

Najprej bom ustvaril Nginx (ime slike) Dockerjev vsebnik http_server1 (ime vsebnika), kot sledi:

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

Kot lahko vidite, vsebnik Docker http_server1 teče.

$ docker ps

Za ustavitev posode Docker http_server1 z uporabo programa Ansible ustvarite novo igro stop_container.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / stop_container.yaml

Nato v vrstico vnesite naslednje vrstice stop_container.yaml knjigo iger.

- gostitelji: docker
uporabnik: ansible
naloge:
- ime: Ustavite vsebnik http_server1
docker_container:
ime: http_server1
stanje: ustavljeno

Ko končate, pritisnite + X čemur sledi Y in shraniti stop_container.yaml mapa.

Tukaj, Ansible docker_container modul se uporablja za zaustavitev vsebnika Docker http_server1.

Zdaj zaženite stop_container.yaml playbook z naslednjim ukazom:

$ ansible-playbook playbooks / stop_container.yaml

Kot lahko vidite, vsebnik Docker http_server1 se ne izvaja več na mojem oddaljenem gostitelju Docker.

$ docker ps

Z naslednjim ukazom lahko navedete vse vsebnike Dockerja (zagnani, zaustavljeni, ustavljeni):

$ docker ps --all

Kot lahko vidite, ustavljen vsebnik Docker http_server1 je naveden.

Ustavitev vseh delujočih zabojnikov Docker:

Če želite z uporabo programa Ansible ustaviti vse vsebnike Dockerja, ki se izvajajo na vašem gostitelju Docker, potem je ta razdelek za vas.

Najprej bom ustvaril 3 vsebnike Docker (strežnik1, strežnik2, in strežnik3), da jih lahko pozneje ustavim z uporabo programa Ansible.

Če želite ustvariti strežnik1 Zabojnik Docker, zaženite naslednji ukaz:

$ docker run -p 8081: 80 -d --name strežnik1 nginx

Če želite ustvariti strežnik2 Zabojnik Docker, zaženite naslednji ukaz:

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

Če želite ustvariti strežnik3 Zabojnik Docker, zaženite naslednji ukaz:

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

Kot lahko vidite, strežnik1, strežnik2, in strežnik3 Zabojniki Docker se izvajajo na mojem oddaljenem gostitelju Docker.

$ docker ps

Če želite ustaviti vse te vsebnike Docker, ustvarite novo knjigo iger stop_all_container.yaml v vašem igralne knjige / imenik, kot sledi:

$ nano playbooks / stop_all_container.yaml

Zdaj vnesite naslednje vrstice v stop_all_container.yaml datoteka playbook.

- gostitelji: docker
uporabnik: ansible
naloge:
- ime: Pridobite seznam vseh tekočih vsebnikov
docker_host_info:
posode: Res
register: docker_info
- ime: Ustavite vse tekoče vsebnike
docker_container:
ime: 'element.Imena [0] | regex_replace ("^ /", "") '
stanje: ustavljeno
zanka: 'docker_info.zabojniki '

Če želite shraniti stop_all_container.yaml datoteko, pritisnite + X čemur sledi Y in .

Tukaj sem opredelil 2 nalogi.

Prva naloga uporablja Ansible docker_host_info modul, da dobite seznam vseh delujočih vsebnikov Docker in ga shranite v docker_info spremenljivka.

Druga naloga se vrti skozi docker_info.posode array poišče tekoča imena vsebnikov Docker in jih ustavi eno za drugim.

Zdaj zaženite stop_all_container.yaml playbook z naslednjim ukazom:

$ ansible-playbook playbooks / stop_all_container.yaml

Knjigo iger bi morali uspešno zagnati, kot lahko vidite na spodnjem posnetku zaslona.

Kot lahko vidite, na mojem oddaljenem gostiteljskem Dockerju ni zagnanih vsebnikov Docker.

$ docker ps

Z naslednjim ukazom lahko navedete vse vsebnike Dockerja (zagnani, zaustavljeni, ustavljeni):

$ docker ps --all

Kot lahko vidite, ustavljeni zabojniki Docker strežnik1, strežnik2, in strežnik3 so navedeni.

Ustavite vse kontejnerje Dockerja, ki izvajajo določeno sliko:

Če želite ustaviti vse vsebnike Dockerja, ki izvajajo določeno sliko Dockerja, potem je ta razdelek za vas.

Najprej ustvarimo nekaj preskusnih Dockerjevih posod.

Ustvaril bom 2 vsebnika Docker (nginx1 in nginx2) uporabljati Nginx Slika Dockerja in 2 vsebnika Docker (http1 in http2) uporabljati httpd Slika Dockerja za predstavitev.

Če želite ustvariti nginx1 Docker posoda z uporabo Nginx Slika Dockerja, zaženite naslednji ukaz:

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

Če želite ustvariti nginx2 Docker posoda z uporabo Nginx Slika Dockerja, zaženite naslednji ukaz:

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

Če želite ustvariti http1 Docker posoda z uporabo httpd Slika Dockerja, zaženite naslednji ukaz:

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

Če želite ustvariti http2 Docker posoda z uporabo httpd Slika Dockerja, zaženite naslednji ukaz:

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

Kot lahko vidite, nginx1, nginx2, http1, in http2 Zabojniki Docker se izvajajo na mojem oddaljenem gostitelju Docker.

Če želite ustaviti vse vsebnike Dockerja, ki izvajajo določeno sliko Dockerja (recimo, nginx), ustvarite novo knjigo Docker stop_all_image_containers.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / stop_all_image_containers.yaml

Zdaj vnesite naslednje vrstice v stop_all_image_containers.yaml mapa.

- gostitelji: docker
uporabnik: ansible
naloge:
- ime: Pridobite seznam vseh tekočih vsebnikov
docker_host_info:
posode: Res
register: docker_info
- ime: Ustavite vse vsebnike, na katerih se izvaja slika nginx
docker_container:
ime: 'element.Imena [0] | regex_replace ("^ /", "") '
stanje: ustavljeno
kdaj: postavka.Slika == 'nginx'
zanka: 'docker_info.zabojniki '

Ko končate, pritisnite + X čemur sledi Y in shraniti stop_all_image_containers.yaml mapa.

Tukaj sem dodal dve nalogi.

Prva naloga uporablja Ansible docker_host_info modul, da dobite seznam vseh delujočih vsebnikov Docker in ga shranite v docker_info spremenljivka.

Druga naloga se vrti skozi docker_info.posode matrika poišče imena zabojnikov Docker in zažene docker_container modul za vsak tekoči vsebnik samo, če je ime slike vsebnika Nginx. Nato ustavi ustrezne vsebnike Docker.

V drugi nalogi se v naslednji vrstici preveri, ali Dockerjev vsebnik izvaja Nginx slike. Če želite, ga lahko spremenite v drugo ime Dockerjeve slike.

Zdaj zaženite stop_all_image_containers.yaml playbook, kot sledi:

$ ansible-playbook playbooks / stop_all_image_containers.yaml

Kot lahko vidite, samo Nginx posode (nginx1 in nginx2) so spremenjeni (ustavljeni). The httpd posode (http1 in http2) so preskočeni.

Kot vidite, ne Nginx Zabojniki Docker se izvajajo na mojem oddaljenem gostitelju Docker. Samo httpd Docker posode (http1 in http2) teče.

$ docker ps

Z naslednjim ukazom lahko navedete vse vsebnike Dockerja (zagnani, zaustavljeni, ustavljeni):

$ docker ps --all

Kot lahko vidite, ustavljeni zabojniki Docker nginx1 in nginx2 so navedeni.

Zaključek:

V tem članku sem vam pokazal, kako ustaviti delujoči vsebnik Dockerja, vse vsebnike Dockerja, ki izvajajo določeno sliko Dockerja, in vse tekoče vsebnike Dockerja vašega gostitelja Docker. Za to sem uporabil Ansible docker_container in docker_host_info moduli v tem članku.

Če želite izvedeti več o teh modulih, obiščite naslednje strani z uradno dokumentacijo Ansible.

[1] docker_container - Upravljanje vsebnikov dockerja
[2] docker_host_info - pridobi dejstva o gonilniku dockerja in sezname predmetov storitev

Kako uporabiti Xdotool za spodbujanje klikov in pritiskov mišk v Linuxu
Xdotool je brezplačno in odprtokodno orodje za ukazno vrstico, ki simulira klike in pritiske tipk. Ta članek bo zajemal kratek vodnik o uporabi xdotoo...
Najboljših 5 izdelkov z ergonomsko računalniško miško za Linux
Ali dolgotrajna uporaba računalnika povzroča bolečine v zapestju ali prstih? Ali imate trde sklepe in bi se morali neprestano tresti z rokami? Ali čut...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...