Selles artiklis näitan teile, kuidas konkreetset Dockeri konteinerit peatada. Samuti näitan teile, kuidas peatada kõik töötavad Dockeri konteinerid või kõik Dockeri konteinerid, mis töötavad konkreetset Dockeri pilti, kasutades rakendust Ansible. Alustame siis.
Eeldused:
Kui soovite proovida selle artikli näiteid,
1) Teie arvutisse peab olema installitud Ansible.
2) Docker peab olema arvutisse või Ubuntu kaughosti installitud.
3) Teie Dockeri hosti peab olema installitud Python Dockeri teek.
4) Dockeri hosti peate konfigureerima Ansible automatiseerimise jaoks.
MÄRGE: Dockeri peremees on arvuti, kuhu olete installinud Dockeri.
LinuxHintis on palju artikleid, mis on pühendatud Ansible'i installimisele ja hostide konfigureerimisele Ansible'i automatiseerimiseks ning Dockeri installimiseks. Vajadusel võite neid vaadata.
Projektikataloogi loomine:
Kõigi selles artiklis loodavate failide ja kataloogide korrastamiseks on mõistlik luua projekti kataloog.
Projektikataloogi loomiseks docker1 / käivitage oma praeguses töökataloogis järgmine käsk:
$ mkdir -pv docker1 / playbooks
Nüüd navigeerige jaotisesse docker1 / projekti kataloog järgmiselt:
$ cd dokkija1 /
Dockeri hosti kaugautomaatika jaoks lubatava seadistamine:
Kui teil on Docker installitud Ubuntu kaughosti, mida soovite automatiseerida Ansible abil, siis on see jaotis teie jaoks.
Kõigepealt looge Ansible inventuuri fail võõrustajad järgmise käsuga:
$ nano hostid
Nüüd lisage oma Dockeri hosti IP-aadress või DNS-nimi võõrustajad varude toimik järgmiselt.
[dokkija]vm4.nodekite.com
Minu puhul on minu Ubuntu Dockeri hosti DNS-nimi vm4.nodekite.com. Teie jaoks on see erinev. Niisiis, asendage see vastavalt vajadusele.
Kui olete valmis, vajutage
Nüüd looge Ansible konfiguratsioonifail võimalik.vrd järgnevalt:
$ nano on võimalik.vrd
Sisestage nüüd järgmised read võimalik.vrd konfiguratsioonifail.
[dokkija]vm4.nodekite.com
Kui olete valmis, vajutage
Nüüd kontrollige, kas saate Dockeri kaughosti oma arvutist pingida järgmise käsuga:
$ ansible all -u ansible -m ping
Nagu näete, saan oma Dockeri kaughosti pingida.
Nagu näete, on mul Docker 19.03.11 installitud minu kaug Ubuntu Dockeri hostile.
Nüüd peab Ansible dockeri moodulite töötamiseks olema teie Dockeri kaughosti arvutisse installitud Python Dockeri teek. Selles artiklis kasutan Ubuntu. Niisiis kajastan seda.
Python Dockeri teegi installimiseks oma kaug-Dockeri hosti (Ubuntu) looge uus Ansible playbook install_docker_python_lib.yaml aastal mänguraamatud / kataloogi järgmiselt:
$ nano playbooks / install_docker_python_lib.yaml
Sisestage nüüd järgmised read install_docker_python_lib.yaml faili.
- võõrustajad: dokkkasutaja: ansible
muutunud: Tõsi
ülesanded:
- nimi: Veenduge, et pakett python3-docker oleks installitud
asjakohane:
nimi: python3-docker
olek: kohal
update_cache: Tõsi
Kui olete valmis, vajutage
Nüüd käivitage install_docker_python_lib.yaml järgmine raamat:
$ ansible-playbook playbooks / install_docker_python_lib.yaml
Esiraamat peaks edukalt töötama ja see installib teie kaugdoktorisse Dockeri Python Dockeri teegi.
Kohaliku Dockeri hosti automatiseerimise jaoks konfigureerimine:
Kui teil on Docker installitud hostile, kuhu olete installinud Ansible, ja soovite seda automatiseerida, kasutades Ansible'i, siis on see jaotis teie jaoks.
Kõigepealt looge uus Ansible mänguraamat install_docker_python_lib.yaml aastal mänguraamatud / kataloogi järgmiselt:
$ nano playbooks / install_docker_python_lib.yaml
Sisestage nüüd järgmised read install_docker_python_lib.yaml faili.
- hostid: localhostühendus: kohalik
kasutaja: shovon
muutunud: Tõsi
ülesanded:
- nimi: Veenduge, et pakett python3-docker oleks installitud
asjakohane:
nimi: python3-docker
olek: kohal
update_cache: Tõsi
Siin, rida kasutaja: shovon komplektid kühvel kasutajana, kes täidab ülesandeid. Teie jaoks on see erinev. Muutke see kindlasti oma sisselogimise kasutajanimeks.
Dockeri hosti sisselogimisnime leiate järgmise käsuga:
$ whoami
Kui olete valmis, vajutage
Nüüd käivitage install_docker_python_lib.yaml järgmine raamat:
$ ansible-playbook - ask-pass - ask-muutunud-passplaybooks / install_docker_python_lib.yaml
Ansible küsib teilt selle esitusraamatusse määratud kasutaja sisselogimisparooli. Sisestage sisselogimisparool ja vajutage
Ansible küsib teilt ka BECOME / sudo parooli. See peaks olema sama parool kui teie sisselogimisparool. Niisiis, jätke see tühjaks ja vajutage
Playbook peaks hakkama jooksma. Selle täitmine võib võtta mõnda aega.
Siinkohal peaks esitusraamat olema edukas ja Python Dockeri teek tuleks installida.
Esitusraamatute vajalike kohanduste tegemine:
Sõltuvalt sellest, kas haldate Dockeri konteinereid oma kohalikus Dockeri hostis või kaughokis Docker, peate oma esitusraamatud vastavalt kohandama.
Selle artikli järgmistest jaotistest käitan Dockeri kaughostis näidisraamatuid. Niisiis algavad kõik mänguraamatud järgmiste ridadega:
- võõrustajad: dokkkasutaja: ansible
ülesanded:
Kui soovite esitusraamatuid käitada kohalikus Dockeri hostis, siis veenduge, et esitusraamatud algaksid hoopis järgmiste ridadega.
- hostid: localhostühendus: kohalik
kasutaja: shovon
muutunud: Tõsi
ülesanded:
Seejärel asendage
Kui kavatsete Dockeri hosti kohalikult hallata, kasutades Ansible'i, peate ka Ansible'i esitusraamatuid natuke teisiti käitama.
Ansible Playbooki saate kohalikult käitada järgmiselt:
$ ansible-playbook - ask-pass - ask-muutunud-pass
Muutke kindlasti
Dockeri konteineri peatamine:
Kui teil on töötav Dockeri konteiner ja teate Dockeri konteineri ID või nime, saate selle Dockeri konteineri hõlpsalt peatada.
Selles jaotises näitan teile, kuidas seda teha.
Esiteks kavatsen luua Nginx (pildi nimi) Dockeri konteiner http_server1 (konteineri nimi) järgmiselt:
$ docker run -p 8080: 80 -d - nimi http_server1 nginx
Nagu näete, Dockeri konteiner http_server1 töötab.
$ dokkija ps
Dockeri konteineri peatamiseks http_server1 rakenduse Ansible abil saate luua uue mänguraamatu stop_container.yaml aastal mänguraamatud / kataloogi järgmiselt:
Esitusraamatud $ nano / stop_container.yaml
Seejärel tippige väljale järgmised read stop_container.yaml mänguraamat.
- võõrustajad: dokkkasutaja: ansible
ülesanded:
- nimi: peatage konteiner http_server1
docker_container:
nimi: http_server1
riik: peatatud
Kui olete valmis, vajutage
Siin, Ansible docker_container moodulit kasutatakse Dockeri konteineri peatamiseks http_server1.
Nüüd käivitage stop_container.yaml esitusraamat järgmise käsuga:
$ ansible-playbook playbooks / stop_container.yaml
Nagu näete, Dockeri konteiner http_server1 ei tööta enam minu kaug-Dockeri hostis.
$ dokkija ps
Kõigi Dockeri konteinerite (töötavad, peatatud, peatatud) saate loetleda järgmise käsuga:
$ docker ps - kõikNagu näete, peatunud Dockeri konteiner http_server1 on loetletud.
Kõigi töötavate dokkerikonteinerite peatamine:
Kui soovite peatada kõik teie Dockeri hostis töötavad Dockeri konteinerid rakenduse Ansible abil, on see jaotis teie jaoks.
Esiteks kavatsen luua 3 Dockeri konteinerit (server1, server2, ja server3), et saaksin neid kõiki Ansible'i hiljem peatada.
Selle loomiseks server1 Dockeri konteiner, käivitage järgmine käsk:
$ docker run -p 8081: 80 -d --name server1 nginx
Selle loomiseks server2 Dockeri konteiner, käivitage järgmine käsk:
$ docker run -p 8082: 80 -d --name server2 nginx
Selle loomiseks server3 Dockeri konteiner, käivitage järgmine käsk:
$ docker run -p 8083: 80 -d --name server3 nginx
Nagu näete, server1, server2, ja server3 Dockeri konteinerid töötavad minu kaug-Dockeri hostis.
$ dokkija ps
Kõigi nende Dockeri konteinerite peatamiseks looge uus mänguraamat stop_all_container.yaml oma mänguraamatud / kataloogi järgmiselt:
Esitusraamatud $ nano / stop_all_container.yaml
Sisestage nüüd järgmised read stop_all_container.yaml esitusraamatu fail.
- võõrustajad: dokkkasutaja: ansible
ülesanded:
- nimi: hankige kõigi töötavate konteinerite loend
docker_host_info:
konteinerid: tõsi
register: docker_info
- nimi: peatage kõik töötavad konteinerid
docker_container:
nimi: 'üksus.Nimed [0] | regex_replace ("^ /", "") '
riik: peatatud
silmus: 'docker_info.konteinerid '
Salvestamiseks stop_all_container.yaml faili, vajutage
Siin olen määranud 2 ülesannet.
Esimene ülesanne kasutab Ansible'i docker_host_info moodulist kõigi töötavate Dockeri konteinerite loendi saamiseks ja selle salvestamiseks docker_info muutuv.
Teine ülesanne viib läbi docker_info.konteinerid array leiab töötavate Dockeri konteinerite nimed ja peatab need ükshaaval.
Nüüd käivitage stop_all_container.yaml esitusraamat järgmise käsuga:
$ ansible-playbook playbooks / stop_all_container.yaml
Esitusraamat peaks edukalt töötama, nagu näete alloleval ekraanipildil.
Nagu näete, pole minu kaugemas Dockeri hostis ühtegi töötavat Dockeri konteinerit.
$ dokkija ps
Kõigi Dockeri konteinerite (töötavad, peatatud, peatatud) saate loetleda järgmise käsuga:
$ docker ps - kõikNagu näete, peatatud Dockeri konteinerid server1, server2, ja server3 on loetletud.
Peatage kõik Dockeri konteinerid konkreetse pildi käitamisel:
Kui soovite peatada kõik Dockeri konteinerid, mis töötavad kindlat Dockeri pilti, on see jaotis teie jaoks.
Kõigepealt loome mõned näivad Dockeri konteinerid.
Loon 2 Dockeri konteinerit (nginx1 ja nginx2) kasutades Nginx Dockeri pilt ja 2 Dockeri konteinerit (http1 ja http2) kasutades httpd Dockeri pilt demonstratsiooniks.
Selle loomiseks nginx1 Dockeri konteiner, kasutades Nginx Dockeri pilt, käivitage järgmine käsk:
$ dockeri käivitus -d -p 8081: 80 - nimi nginx1 nginx
Selle loomiseks nginx2 Dockeri konteiner, kasutades Nginx Dockeri pilt, käivitage järgmine käsk:
$ dockeri käivitus -d -p 8082: 80 - nimi nginx2 nginx
Selle loomiseks http1 Dockeri konteiner, kasutades httpd Dockeri pilt, käivitage järgmine käsk:
$ dockeri käivitus -d -p 8091: 80 - nimi http1 httpd
Selle loomiseks http2 Dockeri konteiner, kasutades httpd Dockeri pilt, käivitage järgmine käsk:
$ dockeri käivitus -d -p 8092: 80 - nimi http2 httpd
Nagu näete, nginx1, nginx2, http1, ja http2 Dockeri konteinerid töötavad minu kaug-Dockeri hostis.
Kõigi Dockeri konteinerite peatamine, mis töötavad konkreetset Dockeri pilti (oletame, et, nginx), looge uus Dockeri mänguraamat stop_all_image_containers.yaml aastal mänguraamatud / kataloogi järgmiselt:
Esitusraamatud $ nano / stop_all_image_containers.yaml
Sisestage nüüd järgmised read stop_all_image_containers.yaml faili.
- võõrustajad: dokkkasutaja: ansible
ülesanded:
- nimi: hankige kõigi töötavate konteinerite loend
docker_host_info:
konteinerid: tõsi
register: docker_info
- nimi: peatage kõik konteinerid, mis töötavad nginx-pilti
docker_container:
nimi: 'üksus.Nimed [0] | regex_replace ("^ /", "") '
riik: peatatud
millal: kirje.Pilt == 'nginx'
silmus: 'docker_info.konteinerid '
Kui olete valmis, vajutage
Siin olen lisanud 2 ülesannet.
Esimene ülesanne kasutab Ansible'i docker_host_info moodulist kõigi töötavate Dockeri konteinerite loendi saamiseks ja selle salvestamiseks docker_info muutuv.
Teine ülesanne viib läbi docker_info.konteinerid array leiab töötavate Dockeri konteinerite nimed ja käivitab docker_container moodulit iga jooksva konteineri jaoks ainult juhul, kui konteineri pildi nimi on Nginx. Seejärel peatab see sobitatud Dockeri konteinerid.
Teises ülesandes kasutatakse järgmist rida kontrollimaks, kas Dockeri konteiner töötab Nginx pilt. Soovi korral saate selle muuta teiseks Dockeri pildi nimeks.
Nüüd käivitage stop_all_image_containers.yaml järgmine raamat:
$ ansible-playbook playbooks / stop_all_image_containers.yaml
Nagu näete, on ainult Nginx konteinerid (nginx1 ja nginx2) on muudetud (peatatud). The httpd konteinerid (http1 ja http2) jäetakse vahele.
Nagu näete, ei Nginx Dockeri konteinerid töötavad minu kaug-Dockeri hostis. Ainult httpd Dokkeri konteinerid (http1 ja http2) töötab.
$ dokkija ps
Kõigi Dockeri konteinerite (töötavad, peatatud, peatatud) saate loetleda järgmise käsuga:
$ docker ps - kõikNagu näete, peatatud Dockeri konteinerid nginx1 ja nginx2 on loetletud.
Järeldus:
Selles artiklis olen teile näidanud, kuidas peatada töötav Dockeri konteiner, kõik Dockeri konteinerid, millel töötab konkreetne Dockeri pilt, ja kõik teie Dockeri hosti töötavad Dockeri konteinerid. Selleks olen kasutanud Ansible'i docker_container ja docker_host_info selle artikli moodulid.
Nende moodulite kohta lisateabe saamiseks külastage järgmisi Ansible ametliku dokumentatsiooni lehti.
[1] docker_container - haldage dockeri konteinereid
[2] docker_host_info - saab fakte doki hosti kohta ja teenuste objektide loendeid