mungkin

Cara Menghentikan Semua Kontainer Docker Menggunakan Ansible

Cara Menghentikan Semua Kontainer Docker Menggunakan Ansible
Ansible memiliki banyak modul untuk mengotomatisasi host Docker, container, volume, jaringan, dll. Jika Anda ingin menghentikan container Docker yang sedang berjalan, Anda juga dapat melakukannya.

Dalam artikel ini, saya akan menunjukkan kepada Anda cara menghentikan wadah Docker tertentu. Saya juga akan menunjukkan cara menghentikan semua container Docker yang sedang berjalan, atau semua container Docker yang menjalankan image Docker tertentu menggunakan Ansible. Jadi, mari kita mulai.

Prasyarat:

Jika Anda ingin mencoba contoh artikel ini,

1) Anda harus menginstal Ansible di komputer Anda.
2) Anda harus menginstal Docker di komputer Anda atau host Ubuntu jarak jauh.
3) Anda harus menginstal pustaka Python Docker di host Docker Anda.
4) Anda harus mengonfigurasi host Docker untuk otomatisasi yang memungkinkan.

CATATAN: Tuan rumah buruh pelabuhan adalah komputer tempat Anda menginstal Docker.

Ada banyak artikel di LinuxHint yang didedikasikan untuk Menginstal Ansible dan mengonfigurasi host untuk otomatisasi Ansible dan menginstal Docker. Anda dapat memeriksanya jika diperlukan.

Membuat Direktori Proyek:

Untuk menjaga semua file dan direktori yang akan kita buat dalam artikel ini terorganisir, ada baiknya untuk membuat direktori proyek project.

Untuk membuat direktori proyek buruh pelabuhan1/ di direktori kerja Anda saat ini, jalankan perintah berikut:

$ mkdir -pv docker1/playbooks

Sekarang, navigasikan ke buruh pelabuhan1/ direktori proyek sebagai berikut:

$ cd buruh pelabuhan1/

Mengonfigurasi Kemungkinan untuk Otomatisasi Host Docker Jarak Jauh:

Jika Anda telah menginstal Docker pada host Ubuntu jarak jauh yang ingin Anda otomatisasi menggunakan Ansible, maka bagian ini cocok untuk Anda.

Pertama, buat file inventaris Ansible tuan rumah dengan perintah berikut:

$ nano host

Sekarang, tambahkan alamat IP atau nama DNS dari host Docker Anda di tuan rumah' file inventaris sebagai berikut:.

[buruh pelabuhan]
vm4.simpul.com

Dalam kasus saya, nama DNS dari Host Docker Ubuntu saya adalah vm4.simpul.com. Ini akan berbeda untukmu. Jadi, pastikan untuk menggantinya seperlunya.

Setelah selesai, tekan + X diikuti oleh kamu dan untuk menyelamatkan tuan rumah mengajukan.

Sekarang, buat file konfigurasi Ansible mungkin.cfg sebagai berikut:

$ nano mungkin.cfg

Sekarang, ketik baris berikut di mungkin.cfg file konfigurasi.

[buruh pelabuhan]
vm4.simpul.com

Setelah selesai, tekan + X diikuti oleh kamu dan untuk menyelamatkan mungkin.cfg mengajukan.

Sekarang, periksa apakah Anda dapat melakukan ping ke host Docker jarak jauh dari komputer Anda dengan perintah berikut:

$ mungkin semua -u mungkin -m ping

Seperti yang Anda lihat, saya dapat melakukan ping ke host Docker jarak jauh saya.

Seperti yang Anda lihat, saya memiliki Docker 19.03.11 diinstal pada Host Docker Ubuntu jarak jauh saya.

Sekarang, Anda harus menginstal pustaka Python Docker di Host Docker jarak jauh Anda agar modul buruh pelabuhan yang memungkinkan berfungsi. Pada artikel ini, saya menggunakan Ubuntu. Jadi, inilah yang akan saya bahas.

Untuk menginstal pustaka Python Docker di host Docker jarak jauh Anda (Ubuntu), buat buku pedoman Ansible baru install_docker_python_lib.yaml dalam buku pedoman/ direktori sebagai berikut:

$ nano buku pedoman/install_docker_python_lib.yaml

Sekarang, ketik baris berikut di install_docker_python_lib.yaml mengajukan.

- tuan rumah: buruh pelabuhan
pengguna: mungkin
menjadi: Benar
tugas:
- nama: Pastikan paket python3-docker diinstal
tepat:
nama: python3-docker
negara: sekarang
update_cache: Benar

Setelah selesai, tekan + X diikuti oleh kamu dan untuk menyelamatkan install_docker_python_lib.yaml mengajukan.

Sekarang, jalankan install_docker_python_lib.yaml buku pedoman sebagai berikut:

$ buku pedoman playbook yang memungkinkan/install_docker_python_lib.yaml

Playbook harus berjalan dengan sukses dan itu akan menginstal pustaka Python Docker di host Docker jarak jauh Anda.

Mengonfigurasi Kemungkinan untuk Otomatisasi Host Docker Lokal:

Jika Anda menginstal Docker di host tempat Anda menginstal Ansible dan Anda ingin mengotomatiskannya menggunakan Ansible, maka bagian ini cocok untuk Anda.

Pertama, buat buku pedoman Ansible baru install_docker_python_lib.yaml dalam buku pedoman/ direktori sebagai berikut:

$ nano buku pedoman/install_docker_python_lib.yaml

Sekarang, ketik baris berikut di install_docker_python_lib.yaml mengajukan.

- host: localhost
koneksi: lokal
pengguna: shovon
menjadi: Benar
tugas:
- nama: Pastikan paket python3-docker diinstal
tepat:
nama: python3-docker
negara: sekarang
update_cache: Benar

Di sini, garis pengguna: shovon set shovon sebagai pengguna yang akan menjalankan tugas. Ini akan berbeda untukmu. Jadi, pastikan untuk mengubahnya menjadi nama pengguna login Anda.

Anda dapat menemukan nama pengguna masuk dari host Docker Anda dengan perintah berikut:

$ whoami

Setelah selesai, tekan + X diikuti oleh kamu dan untuk menyelamatkan install_docker_python_lib.yaml mengajukan.

Sekarang, jalankan install_docker_python_lib.yaml buku pedoman sebagai berikut:

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

Ansible akan menanyakan kata sandi login pengguna yang telah Anda tentukan di buku pedoman. Ketik kata sandi masuk dan tekan .

Ansible akan menanyakan kata sandi MENJADI/Sudo juga. Kata sandi harus sama dengan kata sandi login Anda. Jadi, biarkan kosong dan tekan .

Buku pedoman harus mulai berjalan. Mungkin perlu beberapa saat untuk menyelesaikannya.

Pada titik ini, buku pedoman harus berhasil dan pustaka Python Docker harus diinstal.

Membuat Penyesuaian yang Diperlukan untuk Playbook:

Bergantung pada apakah Anda mengelola wadah Docker di Host Docker lokal Anda atau Host Docker jarak jauh, Anda perlu menyesuaikan buku pedoman Anda.

Dari bagian selanjutnya dari artikel ini, saya akan menjalankan contoh buku pedoman pada host Docker jarak jauh. Jadi, semua buku pedoman akan dimulai dengan baris berikut:

- tuan rumah: buruh pelabuhan
pengguna: mungkin
tugas:

Jika Anda ingin menjalankan playbook di host Docker lokal Anda, pastikan playbook dimulai dengan baris berikut.

- host: localhost
koneksi: lokal
pengguna: shovon
menjadi: Benar
tugas:

Kemudian, ganti dengan tugas yang ingin Anda jalankan dan simpan buku pedoman dengan menekan + X diikuti oleh kamu dan .

Anda juga harus menjalankan buku pedoman Ansible sedikit berbeda jika Anda akan mengelola host Docker secara lokal menggunakan Ansible.

Anda dapat menjalankan playbook Ansible secara lokal sebagai berikut:

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

Pastikan untuk berubah ke jalur file YAML playbook Ansible Anda.

Menghentikan Kontainer Docker:

Jika Anda memiliki wadah Docker yang sedang berjalan dan Anda mengetahui ID atau nama wadah Docker, Anda dapat dengan mudah menghentikan wadah Docker itu menggunakan Ansible.

Di bagian ini, saya akan menunjukkan cara melakukannya.

Pertama, saya akan membuat Nginx (nama gambar) Wadah buruh pelabuhan http_server1 (nama wadah) sebagai berikut:

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

Seperti yang Anda lihat, wadah Docker http_server1 sedang berlari.

$ buruh pelabuhan

Untuk menghentikan wadah Docker http_server1 menggunakan Ansible, buat buku pedoman baru stop_container.yaml dalam buku pedoman/ direktori sebagai berikut:

$ nano buku pedoman/stop_container.yaml

Kemudian, ketik baris berikut di stop_container.yaml buku pedoman.

- tuan rumah: buruh pelabuhan
pengguna: mungkin
tugas:
- nama: Hentikan wadah http_server1
docker_container:
nama: http_server1
status: berhenti

Setelah selesai, tekan + X diikuti oleh kamu dan untuk menyelamatkan stop_container.yaml mengajukan.

Di sini, Ansible docker_container modul digunakan untuk menghentikan wadah Docker http_server1.

Sekarang, jalankan stop_container.yaml playbook dengan perintah berikut:

$ buku pedoman playbook yang memungkinkan/stop_container.yaml

Seperti yang Anda lihat, wadah Docker http_server1 tidak berjalan lagi di Host Docker jarak jauh saya.

$ buruh pelabuhan

Anda dapat membuat daftar semua wadah Docker (berjalan, dijeda, dihentikan) dengan perintah berikut:

$ buruh pelabuhan ps --semua

Seperti yang Anda lihat, wadah Docker yang berhenti http_server1 terdaftar.

Menghentikan Semua Kontainer Docker yang Berjalan:

Jika Anda ingin menghentikan semua wadah Docker yang berjalan di host Docker Anda menggunakan Ansible, maka bagian ini untuk Anda.

Pertama, saya akan membuat 3 wadah Docker (server1, server2, dan server3) sehingga saya bisa menghentikan mereka semua menggunakan Ansible nanti.

Untuk membuat server1 Wadah Docker, jalankan perintah berikut:

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

Untuk membuat server2 wadah Docker, jalankan perintah berikut:

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

Untuk membuat server3 wadah Docker, jalankan perintah berikut:

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

Seperti yang Anda lihat, server1, server2, dan server3 Kontainer Docker berjalan di host Docker jarak jauh saya.

$ buruh pelabuhan

Untuk menghentikan semua wadah Docker itu, buat buku pedoman baru stop_all_container.yaml di kamu buku pedoman/ direktori sebagai berikut:

$ nano buku pedoman/stop_all_container.yaml

Sekarang, ketik baris berikut di stop_all_container.yaml file buku pedoman.

- tuan rumah: buruh pelabuhan
pengguna: mungkin
tugas:
- name: Dapatkan daftar semua container yang sedang berjalan
docker_host_info:
wadah: Benar
daftar: docker_info
- nama: Hentikan semua kontainer yang sedang berjalan
docker_container:
nama: ' item.Nama[0] | regex_replace("^/", "") '
status: berhenti
loop: ' docker_info.wadah '

Untuk menyimpan stop_all_container.yaml file, tekan + X diikuti oleh kamu dan .

Di sini, saya telah menetapkan 2 tugas.

Tugas pertama menggunakan Ansible docker_host_info modul untuk mendapatkan daftar semua wadah Docker yang berjalan dan menyimpannya di docker_info variabel.

Tugas kedua berputar melalui docker_info.wadah array menemukan nama container Docker yang sedang berjalan dan menghentikannya satu per satu.

Sekarang, jalankan stop_all_container.yaml playbook dengan perintah berikut:

$ buku pedoman playbook yang memungkinkan/stop_all_container.yaml

Playbook harus berjalan dengan sukses seperti yang Anda lihat pada tangkapan layar di bawah ini.

Seperti yang Anda lihat, tidak ada wadah Docker yang berjalan di host Docker jarak jauh saya.

$ buruh pelabuhan

Anda dapat membuat daftar semua wadah Docker (berjalan, dijeda, dihentikan) dengan perintah berikut:

$ buruh pelabuhan ps --semua

Seperti yang Anda lihat, wadah Docker yang berhenti server1, server2, dan server3 terdaftar.

Hentikan Semua Kontainer Docker Menjalankan Gambar Tertentu:

Jika Anda ingin menghentikan semua container Docker yang menjalankan image Docker tertentu, maka bagian ini cocok untuk Anda.

Pertama, mari kita buat beberapa wadah Docker dummy.

Saya akan membuat 2 wadah Docker (nginx1 dan nginx2) menggunakan Nginx Gambar Docker dan 2 wadah Docker (http1 dan http2) menggunakan httpd Gambar buruh pelabuhan untuk demonstrasi.

Untuk membuat nginx1 Wadah buruh pelabuhan menggunakan using Nginx gambar Docker, jalankan perintah berikut:

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

Untuk membuat nginx2 Wadah buruh pelabuhan menggunakan using Nginx gambar Docker, jalankan perintah berikut:

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

Untuk membuat http1 Wadah buruh pelabuhan menggunakan using httpd gambar Docker, jalankan perintah berikut:

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

Untuk membuat http2 Wadah buruh pelabuhan menggunakan using httpd gambar Docker, jalankan perintah berikut:

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

Seperti yang Anda lihat, nginx1, nginx2, http1, dan http2 Kontainer Docker berjalan di host Docker jarak jauh saya.

Untuk menghentikan semua container Docker yang menjalankan image Docker tertentu (misalkan, nginx), buat buku pedoman Docker baru stop_all_image_containers.yaml dalam buku pedoman/ direktori sebagai berikut:

$ nano buku pedoman/stop_all_image_containers.yaml

Sekarang, ketik baris berikut di stop_all_image_containers.yaml mengajukan.

- tuan rumah: buruh pelabuhan
pengguna: mungkin
tugas:
- name: Dapatkan daftar semua container yang sedang berjalan
docker_host_info:
wadah: Benar
daftar: docker_info
- nama: Hentikan semua wadah yang menjalankan gambar nginx
docker_container:
nama: ' item.Nama[0] | regex_replace("^/", "") '
status: berhenti
kapan: barang.Gambar == 'nginx'
loop: ' docker_info.wadah '

Setelah selesai, tekan + X diikuti oleh kamu dan untuk menyelamatkan stop_all_image_containers.yaml mengajukan.

Di sini, saya telah menambahkan 2 tugas.

Tugas pertama menggunakan Ansible docker_host_info modul untuk mendapatkan daftar semua wadah Docker yang berjalan dan menyimpannya di docker_info variabel.

Tugas kedua berputar melalui docker_info.wadah array menemukan nama container Docker yang sedang berjalan dan menjalankannya docker_container modul untuk setiap wadah yang berjalan hanya jika nama gambar wadah adalah Nginx. Kemudian, itu menghentikan wadah Docker yang cocok.

Di tugas kedua, baris berikut digunakan untuk memeriksa apakah wadah Docker menjalankan Nginx gambar. Anda dapat mengubahnya ke nama gambar Docker yang berbeda jika Anda mau.

Sekarang, jalankan stop_all_image_containers.yaml buku pedoman sebagai berikut:

$ buku pedoman playbook yang memungkinkan/stop_all_image_containers.yaml

Seperti yang Anda lihat, hanya Nginx wadah (nginx1 dan nginx2) diubah (dihentikan). Itu httpd wadah (http1 dan http2) dilewati.

Seperti yang Anda lihat, tidak Nginx Kontainer Docker berjalan di host Docker jarak jauh saya. Hanya httpd Wadah buruh pelabuhan (http1 dan http2) sedang berlari.

$ buruh pelabuhan

Anda dapat membuat daftar semua wadah Docker (berjalan, dijeda, dihentikan) dengan perintah berikut:

$ buruh pelabuhan ps --semua

Seperti yang Anda lihat, wadah Docker yang berhenti nginx1 dan nginx2 terdaftar.

Kesimpulan:

Dalam artikel ini, saya telah menunjukkan kepada Anda cara menghentikan container Docker yang sedang berjalan, semua container Docker yang menjalankan image Docker tertentu, dan semua container Docker yang sedang berjalan dari host Docker Anda. Untuk melakukan itu, saya telah menggunakan Ansible docker_container dan docker_host_info modul dalam artikel ini.

Untuk mempelajari lebih lanjut tentang modul ini, kunjungi halaman dokumentasi resmi Ansible berikutsible.

[1] docker_container - Kelola wadah buruh pelabuhan
[2] docker_host_info - Mengambil fakta tentang host buruh pelabuhan dan daftar objek layanan

Cara mengubah penunjuk Mouse dan ukuran kursor, warna & skema pada Windows 10
Penunjuk mouse dan kursor di Windows 10 adalah aspek yang sangat penting dari sistem operasi. Ini dapat dikatakan untuk sistem operasi lain juga, jadi...
Mesin Game Gratis dan Sumber Terbuka untuk Mengembangkan Game Linux
Artikel ini akan membahas daftar mesin game sumber terbuka dan gratis yang dapat digunakan untuk mengembangkan game 2D dan 3D di Linux. Ada banyak mes...
Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah tambahan kedua belas untuk seri Tomb Raider - waralaba game aksi-petualangan yang dibuat oleh Eidos Montreal. Permain...