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
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
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
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: localhostkapcsolat: 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
Most futtassa a install_docker_python_lib.yaml játékkönyv az alábbiak szerint:
$ ansible-playbook --ask-pass --ask-lett-passplaybooks / 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: localhostkapcsolat: helyi
felhasználó: shovon
vált: Igaz
feladatok:
Ezután cserélje ki
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
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
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 - mindMint 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
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 - mindenMint 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
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 - mindenMint 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