Lehetséges

Az összes dokkoló konténer leállítása az Ansible használatával

Az összes dokkoló konténer leállítása az Ansible használatával
Az Ansible számos modullal rendelkezik a Docker gazdagép, tárolók, kötetek, hálózatok stb. Automatizálására. Ha le akarja állítani a futó Docker-tárolókat, akkor ezt is megteheti.

Ebben a cikkben bemutatom, hogyan állíthat meg egy adott Docker konténert. Azt is megmutatom, hogyan állíthat le minden futó Docker-tárolót, vagy az összes Docker-tárolót, amely egy adott Docker-képet futtat az Ansible használatával. Tehát kezdjük.

Előfeltételek:

Ha ki szeretné próbálni a cikk példáit,

1) A számítógépére telepítve kell lennie az Ansible programnak.
2) Telepítenie kell a Dockert a számítógépére vagy egy távoli Ubuntu gazdagépre.
3) A Docker gazdagépen telepítenie kell a Python Docker könyvtárat.
4) Be kell állítania a Docker gazdagépet az Ansible automatizáláshoz.

JEGYZET: Docker házigazda az a számítógép, amelyre a Docker telepítve van.

A LinuxHint-en számos cikk foglalkozik az Ansible telepítésével és a gazdagépek konfigurálásával az Ansible automatizálásához, valamint a Docker telepítéséhez. Szükség esetén megnézheti őket.

Projektkönyvtár létrehozása:

Az ebben a cikkben létrehozandó összes fájl és könyvtár rendezettségének fenntartása érdekében célszerű létrehozni egy projekt könyvtárat.

Projekt könyvtár létrehozása dokkoló1 / az aktuális munkakönyvtárban futtassa a következő parancsot:

$ mkdir -pv docker1 / playbooks

Most keresse meg a dokkoló1 / projekt könyvtár az alábbiak szerint:

$ cd dokkoló1 /

A távoli Docker gazdagép automatizálásához konfigurálható:

Ha a Docker telepítve van egy távoli Ubuntu gazdagépre, amelyet automatizálni szeretne az Ansible használatával, akkor ez a szakasz az Ön számára.

Először hozzon létre egy Ansible készletfájlt otthont ad a következő paranccsal:

$ nano házigazdák

Most adja hozzá a Docker gazdagép IP-címét vagy DNS-nevét a otthont ad' leltárállomány az alábbiak szerint.

[dokkmunkás]
vm4.nodekite.com

Esetemben az Ubuntu Docker gazdagépem DNS-neve vm4.nodekite.com. Neked más lesz. Tehát mindenképpen cserélje ki, ha szükséges.

Ha végzett, nyomja meg a gombot + x utána Y és hogy megmentse a otthont ad fájl.

Most hozzon létre egy Ansible konfigurációs fájlt lehetséges.vö alábbiak szerint:

$ nano ansible.vö

Írja be a következő sorokat a lehetséges.vö konfigurációs fájl.

[dokkmunkás]
vm4.nodekite.com

Ha végzett, nyomja meg a gombot + x utána Y és hogy megmentse a lehetséges.vö fájl.

Most ellenőrizze, hogy a következő paranccsal pingelheti-e a távoli Docker gazdagépet a számítógépről:

$ ansible all -u ansible -m ping

Amint láthatja, meg tudom pingelni a távoli Docker gazdagépemet.

Mint láthatja, nekem van Docker 19.03.11 telepítve van a távoli Ubuntu Docker gazdagépemen.

Mostantól telepítenie kell a Python Docker könyvtárat a távoli Docker gazdagépre az Ansible dokkoló modulok működéséhez. Ebben a cikkben az Ubuntut használom. Szóval, erről kitérek.

A Python Docker könyvtár telepítéséhez a távoli Docker gazdagépre (Ubuntu) hozzon létre egy új Ansible playbookot install_docker_python_lib.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:

$ nano playbooks / install_docker_python_lib.yaml

Írja be a következő sorokat a install_docker_python_lib.yaml fájl.

- házigazdák: dokkoló
felhasználó: ansible
vált: Igaz
feladatok:
- név: Győződjön meg arról, hogy a python3-docker csomag telepítve van
apt:
név: python3-docker
állapot: jelen
update_cache: Igaz

Ha végzett, nyomja meg a gombot + x utána Y és hogy megmentse a install_docker_python_lib.yaml fájl.

Most futtassa a install_docker_python_lib.yaml játékkönyv az alábbiak szerint:

$ ansible-playbook playbooks / install_docker_python_lib.yaml

A játékkönyvnek sikeresen futnia kell, és telepíti a Python Docker könyvtárat a távoli Docker gazdagépre.

Az Ansible konfigurálása a helyi Docker gazdagép automatizálásához:

Ha a Docker telepítve van azon a gazdagépen, ahová az Ansible telepítve van, és automatizálni szeretné az Ansible használatával, akkor ez a szakasz az Ön számára.

Először hozzon létre egy új Ansible játékkönyvet install_docker_python_lib.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:

$ nano playbooks / install_docker_python_lib.yaml

Írja be a következő sorokat a install_docker_python_lib.yaml fájl.

- házigazdák: localhost
kapcsolat: helyi
felhasználó: shovon
vált: Igaz
feladatok:
- név: Győződjön meg arról, hogy a python3-docker csomag telepítve van
apt:
név: python3-docker
állapot: jelen
update_cache: Igaz

Itt a sor felhasználó: shovon készletek shovon mint a feladatot végrehajtó felhasználó. Neked más lesz. Tehát ne felejtse el megváltoztatni a bejelentkezési felhasználónévre.

Docker gazdagépének bejelentkezési felhasználónevét a következő paranccsal találhatja meg:

$ whoami

Ha végzett, nyomja meg a gombot + x utána Y és hogy megmentse a install_docker_python_lib.yaml fájl.

Most futtassa a install_docker_python_lib.yaml játékkönyv az alábbiak szerint:

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

Az Ansible kérni fogja a játékkönyvben megadott felhasználó bejelentkezési jelszavát. Írja be a bejelentkezési jelszót, és nyomja meg a gombot .

Az Ansible meg fogja kérni a BECOME / sudo jelszót is. Ennek meg kell egyeznie a bejelentkezési jelszóval. Tehát hagyja üresen és nyomja meg .

A játékkönyvnek futnia kell. Eltarthat egy ideig, amíg elkészül.

Ezen a ponton a játékkönyvnek sikeresnek kell lennie, és telepítenie kell a Python Docker könyvtárat.

A játékkönyvek szükséges módosítása:

Attól függően, hogy a Docker tárolókat a helyi Docker gazdagépen vagy egy távoli Docker gazdagépen kezeli, ennek megfelelően kell beállítania a lejátszási könyveket.

A cikk következő szakaszaiban a példakönyveket egy távoli Docker-állomáson futtatom. Tehát az összes játékkönyv a következő sorokkal kezdődik:

- házigazdák: dokkoló
felhasználó: ansible
feladatok:

Ha a helyi Docker gazdagépen szeretné futtatni a lejátszási könyveket, akkor győződjön meg arról, hogy a könyveket a következő sorokkal kezdik.

- házigazdák: localhost
kapcsolat: helyi
felhasználó: shovon
vált: Igaz
feladatok:

Ezután cserélje ki a futtatni kívánt feladatokkal, és a gomb megnyomásával mentse el a játékkönyvet + x utána Y és .

Az Ansible lejátszási könyveket is kicsit másképp kell futtatnia, ha a Docker gazdagépet helyileg szeretné kezelni az Ansible használatával.

Az Ansible playbookot az alábbiak szerint futtathatja:

$ ansible-playbook --ask-pass --ask-lett-pass

Ügyeljen arra, hogy változtasson az Ansible playbook YAML fájljának elérési útjára.

Docker konténer leállítása:

Ha van futó Docker-tárolója, és tudja a Docker-tároló azonosítóját vagy nevét, akkor az Ansible segítségével könnyen leállíthatja azt a Docker-tárolót.

Ebben a részben megmutatom, hogyan kell ezt megtenni.

Először fogok létrehozni egy Nginx (kép neve) Docker konténer http_szerver1 (tároló neve) az alábbiak szerint:

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

Mint látható, a Docker konténer http_szerver1 fut.

$ dokkoló ps

A Docker konténer leállításához http_szerver1 az Ansible használatával hozzon létre egy új játékkönyvet stop_container.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:

$ nano playbooks / stop_container.yaml

Ezután írja be a következő sorokat a stop_container.yaml játékkönyv.

- házigazdák: dokkoló
felhasználó: ansible
feladatok:
- név: Állítsa le a http_server1 tárolót
docker_container:
név: http_szerver1
állapot: leállt

Ha végzett, nyomja meg a gombot + x utána Y és hogy megmentse a stop_container.yaml fájl.

Itt az Ansible docker_container modul a Docker konténer leállítására szolgál http_szerver1.

Most futtassa a stop_container.yaml playbook a következő paranccsal:

$ ansible-playbook playbooks / stop_container.yaml

Mint látható, a Docker konténer http_szerver1 már nem fut a távoli Docker gazdagépemen.

$ dokkoló ps

Az összes Docker-tárolót (futó, szüneteltetett, leállított) a következő paranccsal sorolhatja fel:

$ docker ps - mind

Mint látható, a leállított Docker konténer http_szerver1 szerepel.

Az összes futó dokkoló konténer leállítása:

Ha le szeretné állítani az összes Docker-tárolót, amely a Docker gazdagépen fut, az Ansible használatával, akkor ez a szakasz az Ön számára.

Először 3 Docker konténert fogok létrehozni (szerver1, szerver2, és szerver3), hogy később mindet leállíthassam az Ansible használatával.

A szerver1 Docker-tároló, futtassa a következő parancsot:

$ docker -p -p 8081: 80 -d --name server1 nginx

A szerver2 Docker-tároló, futtassa a következő parancsot:

$ docker -futtatás -p 8082: 80 -d --name server2 nginx

A szerver3 Docker-tároló, futtassa a következő parancsot:

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

Mint láthatja, a szerver1, szerver2, és szerver3 A Docker konténerek futnak a távoli Docker gazdagépemen.

$ dokkoló ps

Az összes Docker-tároló leállításához hozzon létre egy új játékkönyvet stop_all_container.yaml a te játékkönyvek / könyvtárat az alábbiak szerint:

$ nano playbooks / stop_all_container.yaml

Írja be a következő sorokat a stop_all_container.yaml playbook fájl.

- házigazdák: dokkoló
felhasználó: ansible
feladatok:
- név: Az összes futó tároló listájának lekérése
docker_host_info:
konténerek: Igaz
regisztráció: docker_info
- név: Állítson le minden futó konténert
docker_container:
név: 'elem.Nevek [0] | regex_replace ("^ /", "") '
állapot: leállt
hurok: 'docker_info.tárolók '

A stop_all_container.yaml fájlt, nyomja meg a gombot + x utána Y és .

Itt 2 feladatot definiáltam.

Az első feladat az Ansible-t használja docker_host_info modul az összes futó Docker-tároló listájának lekéréséhez és az docker_info változó.

A második feladat a docker_info.konténerek A tömb megtalálja a futó Docker tárolóneveket, és egyesével leállítja őket.

Most futtassa a stop_all_container.yaml playbook a következő paranccsal:

$ ansible-playbook playbooks / stop_all_container.yaml

A játékkönyvnek sikeresen kell futnia, amint az az alábbi képernyőképen látható.

Mint láthatja, a távoli Docker gazdagépemen nincsenek futó Docker-tárolók.

$ dokkoló ps

Az összes Docker-tárolót (futó, szüneteltetett, leállított) a következő paranccsal sorolhatja fel:

$ docker ps - minden

Mint látható, a leállított Docker konténerek szerver1, szerver2, és a szerver3 listázott.

Állítsa le az összes Docker konténert egy adott kép futtatásáról:

Ha le szeretné állítani az összes Docker-tárolót, amely egy adott Docker-képet futtat, akkor ez a szakasz az Ön számára.

Először hozzunk létre néhány dummy Docker konténert.

Létrehozok 2 Docker konténert (nginx1 és nginx2) használni a Nginx Docker kép és 2 Docker konténer (http1 és http2) használni a httpd Docker kép a bemutatóhoz.

A nginx1 Docker konténer a Nginx Docker image, futtassa a következő parancsot:

$ docker futás -d -p 8081: 80 --name nginx1 nginx

A nginx2 Docker konténer a Nginx Docker image, futtassa a következő parancsot:

$ docker futás -d -p 8082: 80 --name nginx2 nginx

A http1 Docker konténer a httpd Docker image, futtassa a következő parancsot:

$ docker futás -d -p 8091: 80 - név http1 httpd

A http2 Docker konténer a httpd Docker image, futtassa a következő parancsot:

$ docker futtatás -d -p 8092: 80 - név http2 httpd

Mint láthatja, a nginx1, nginx2, http1, és http2 A Docker konténerek futnak a távoli Docker gazdagépemen.

Az összes Docker-tároló leállítása, amely egy adott Docker-képet futtat (mondjuk, nginx), hozzon létre egy új Docker játékkönyvet stop_all_image_containers.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:

$ nano playbooks / stop_all_image_containers.yaml

Írja be a következő sorokat a stop_all_image_containers.yaml fájl.

- házigazdák: dokkoló
felhasználó: ansible
feladatok:
- név: Az összes futó tároló listájának lekérése
docker_host_info:
konténerek: Igaz
regisztráció: docker_info
- név: Állítsa le az összes tárolót, amely az nginx képet futtatja
docker_container:
név: 'elem.Nevek [0] | regex_replace ("^ /", "") '
állapot: leállt
mikor: elem.Kép == 'nginx'
hurok: 'docker_info.tárolók '

Ha végzett, nyomja meg a gombot + x utána Y és hogy megmentse a stop_all_image_containers.yaml fájl.

Itt 2 feladatot adtam hozzá.

Az első feladat az Ansible-t használja docker_host_info modul az összes futó Docker-tároló listájának lekéréséhez és az docker_info változó.

A második feladat a docker_info.konténerek tömb megtalálja a futó Docker tároló neveket, és futtatja a docker_container modul minden futó tárolóhoz csak akkor, ha a tároló képneve az Nginx. Ezután leállítja a megfelelő Docker konténereket.

A második feladatban a következő sor segítségével ellenőrizhető, hogy a Docker-tároló futtatja-e a Nginx kép. Ha akarja, megváltoztathatja másik Docker-képnévre.

Most futtassa a stop_all_image_containers.yaml játékkönyv az alábbiak szerint:

$ ansible-playbook playbooks / stop_all_image_containers.yaml

Mint láthatja, csak a Nginx konténerek (nginx1 és nginx2) módosultak (leálltak). A httpd konténerek (http1 és http2) kihagyásra kerülnek.

Mint láthatja, nem Nginx A Docker konténerek futnak a távoli Docker gazdagépemen. Csak a httpd Docker konténerek (http1 és http2) fut.

$ dokkoló ps

Az összes Docker-tárolót (futó, szüneteltetett, leállított) a következő paranccsal sorolhatja fel:

$ docker ps - minden

Mint látható, a leállított Docker konténerek nginx1 és nginx2 listázott.

Következtetés:

Ebben a cikkben bemutattam, hogyan lehet leállítani egy futó Docker-tárolót, az összes Docker-tárolót, amely egy adott Docker-képet futtat, és a Docker-állomás összes futó Docker-tárolóját. Ehhez az Ansible-t használtam docker_container és docker_host_info modulok ebben a cikkben.

Ha többet szeretne megtudni ezekről a modulokról, keresse fel a következő hivatalos dokumentációs oldalakat.

[1] docker_container - Docker-tárolók kezelése
[2] docker_host_info - A dokkoló gazdagépével kapcsolatos tények és a szolgáltatások objektumainak listája

Telepítse a legújabb OpenRA stratégiai játékot az Ubuntu Linux rendszerre
Az OpenRA egy ingyenes / ingyenes valós idejű stratégiai játékmotor, amely újjáépíti a korai Westwood játékokat, mint például a klasszikus Command & C...
Telepítse a legújabb Dolphin Emulator for Gamecube & Wii szoftvert Linuxra
A Dolphin Emulator segítségével a kiválasztott Gamecube & Wii játékokat játszhatja Linux személyi számítógépeken (PC). Mivel a Dolphin Emulator szaba...
A GameConqueror Cheat Engine használata Linux alatt
A cikk tartalmaz egy útmutatót a GameConqueror csaló motor Linux alatt történő használatáról. Sok olyan felhasználó, aki Windows-on játszik játékot, g...