Tidak boleh difahami

Cara Menghentikan Semua Bekas Docker Menggunakan Ansible

Cara Menghentikan Semua Bekas Docker Menggunakan Ansible
Ansible mempunyai banyak modul untuk mengautomasikan host Docker, bekas, jilid, rangkaian, dan lain-lain. Sekiranya anda mahu menghentikan bekas Docker anda, anda juga boleh melakukannya.

Dalam artikel ini, saya akan menunjukkan kepada anda cara menghentikan wadah Docker tertentu. Saya juga akan menunjukkan kepada anda cara menghentikan semua kontena Docker yang sedang berjalan, atau semua kontena Docker yang menjalankan gambar Docker tertentu menggunakan Ansible. Oleh itu, mari kita mulakan.

Prasyarat:

Sekiranya anda ingin mencuba contoh artikel ini,

1) Anda mesti memasang Ansible di komputer anda.
2) Anda mesti memasang Docker pada komputer anda atau hos Ubuntu jauh.
3) Anda mesti memasang pustaka Python Docker pada hos Docker anda.
4) Anda mesti mengkonfigurasi host Docker untuk automasi Ansible.

NOTA: Tuan rumah Docker adalah komputer tempat anda memasang Docker.

Terdapat banyak artikel mengenai LinuxHint yang dikhaskan untuk Memasang Ansible dan mengkonfigurasi hos untuk automasi Ansible dan memasang Docker. Anda boleh memeriksanya jika diperlukan.

Membuat Direktori Projek:

Untuk menyimpan semua fail dan direktori yang akan kami buat dalam artikel ini dengan teratur, ada baiknya membuat direktori projek.

Untuk membuat direktori projek pelabuhan1 / dalam direktori kerja semasa anda, jalankan arahan berikut:

$ mkdir -pv docker1 / buku main

Sekarang, arahkan ke pelabuhan1 / direktori projek seperti berikut:

$ cd docker1 /

Mengkonfigurasi Ansible untuk Automasi Host Docker Jauh:

Sekiranya anda memasang Docker pada hos Ubuntu jauh yang anda mahu automatik menggunakan Ansible, maka bahagian ini adalah untuk anda.

Pertama, buat fail inventori Ansible tuan rumah dengan arahan berikut:

hos $ nano

Sekarang, tambahkan alamat IP atau nama DNS host Docker anda di tuan rumah ' fail inventori seperti berikut.

[pelabuhan]
vm4.angguk.com

Dalam kes saya, nama DNS host Ubuntu Docker saya adalah vm4.angguk.com. Ia akan berbeza bagi anda. Oleh itu, pastikan untuk menggantinya jika perlu.

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan tuan rumah fail.

Sekarang, buat fail konfigurasi Ansible tidak boleh dimakan.cfg seperti berikut:

$ nano tidak boleh dimakan.cfg

Sekarang, ketik baris berikut di tidak boleh dimakan.cfg fail konfigurasi.

[pelabuhan]
vm4.angguk.com

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan tidak boleh dimakan.cfg fail.

Sekarang, periksa sama ada anda boleh melakukan ping hos Docker jauh dari komputer anda dengan arahan berikut:

$ ansible all -u ansible -m ping

Seperti yang anda lihat, saya boleh membuat ping kepada host Docker yang jauh.

Seperti yang anda lihat, saya mempunyai Docker 19.03.11 dipasang pada hos Ubuntu Docker jauh saya.

Sekarang, anda mesti memasang perpustakaan Python Docker pada hos Docker jauh anda agar modul docker Ansible berfungsi. Dalam artikel ini, saya menggunakan Ubuntu. Jadi, inilah yang akan saya bahaskan.

Untuk memasang pustaka Python Docker pada hos Docker jauh anda (Ubuntu), buat buku main Ansible baru install_docker_python_lib.keladi di dalam buku permainan / direktori seperti berikut:

Buku main $ nano / install_docker_python_lib.keladi

Sekarang, ketik baris berikut di install_docker_python_lib.keladi fail.

- hos: dok
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- name: Pastikan pakej python3-docker dipasang
sesuai:
nama: python3-docker
nyatakan: sekarang
update_cache: Betul

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan install_docker_python_lib.keladi fail.

Sekarang, jalankan install_docker_python_lib.keladi buku permainan seperti berikut:

playbook $ ansible-playbook / install_docker_python_lib.keladi

Buku permainan akan berjaya dijalankan dan ia akan memasang pustaka Python Docker pada hos Docker jauh anda.

Mengkonfigurasi Ansible untuk Automasi Host Docker Tempatan:

Sekiranya anda memasang Docker pada hos tempat anda memasang Ansible dan anda mahu mengautomasikannya menggunakan Ansible, maka bahagian ini adalah untuk anda.

Pertama, buat buku main Ansible baru install_docker_python_lib.keladi di dalam buku permainan / direktori seperti berikut:

Buku main $ nano / install_docker_python_lib.keladi

Sekarang, ketik baris berikut di install_docker_python_lib.keladi fail.

- hos: localhost
sambungan: tempatan
pengguna: shovon
menjadi: Benar
tugas:
- name: Pastikan pakej python3-docker dipasang
sesuai:
nama: python3-docker
nyatakan: hadir
update_cache: Betul

Di sini, garis pengguna: shovon set penyodok sebagai pengguna yang akan melaksanakan tugas. Ia akan berbeza bagi anda. Oleh itu, pastikan untuk menukarnya ke nama pengguna log masuk anda.

Anda boleh mendapatkan nama pengguna log masuk hos Docker anda dengan arahan berikut:

$ whoami

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan install_docker_python_lib.keladi fail.

Sekarang, jalankan install_docker_python_lib.keladi buku permainan seperti berikut:

$ ansible-playbook --sas-pass --ask-menjadi-pass
buku main / install_docker_python_lib.keladi

Ansible akan meminta kata laluan masuk pengguna yang telah anda nyatakan dalam buku main. Ketik kata laluan log masuk dan tekan .

Ansible akan meminta anda untuk menjadi kata laluan BECOME / sudo juga. Kata laluan harus sama dengan kata laluan masuk anda. Oleh itu, biarkan kosong dan tekan .

Buku permainan harus mula berjalan. Mungkin diperlukan sedikit masa untuk diselesaikan.

Pada ketika ini, buku main harus berjaya dan pustaka Python Docker harus dipasang.

Membuat Penyesuaian yang Perlu pada Buku Main:

Bergantung pada sama ada anda menguruskan kontena Docker di host Docker tempatan anda atau host Docker jauh, anda perlu menyesuaikan buku permainan anda dengan sewajarnya.

Dari bahagian seterusnya artikel ini, saya akan menjalankan contoh buku panduan pada host Docker yang jauh. Jadi, semua buku permainan akan dimulakan dengan baris berikut:

- hos: dok
pengguna: tidak boleh dimakan
tugas:

Sekiranya anda ingin menjalankan buku main di host Docker tempatan anda, maka pastikan bahawa buku main dimulakan dengan baris berikut.

- hos: localhost
sambungan: tempatan
pengguna: shovon
menjadi: Benar
tugas:

Kemudian, ganti dengan tugas yang ingin anda jalankan dan simpan buku main dengan menekan + X diikuti oleh Y dan .

Anda juga harus menjalankan buku main Ansible sedikit berbeza jika anda menguruskan hos Docker secara tempatan menggunakan Ansible.

Anda boleh menjalankan buku main Ansible secara tempatan seperti berikut:

$ ansible-playbook --sas-pass --ask-menjadi-pass

Pastikan berubah ke jalan fail YAML buku main Ansible anda.

Menghentikan Docker Container:

Sekiranya anda mempunyai bekas Docker yang sedang berjalan dan anda mengetahui ID atau nama bekas Docker, anda boleh menghentikan bekas Docker itu dengan mudah menggunakan Ansible.

Dalam bahagian ini, saya akan menunjukkan kepada anda bagaimana melakukannya.

Pertama, saya akan membuat Nginx (nama gambar) Bekas dok http_server1 (nama kontena) seperti berikut:

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

Seperti yang anda lihat, bekas Docker http_server1 adalah berlari.

$ dok dok

Untuk menghentikan bekas Docker http_server1 menggunakan Ansible, buat buku main baru stop_container.keladi di dalam buku permainan / direktori seperti berikut:

Buku main $ nano / stop_container.keladi

Kemudian, taipkan baris berikut di stop_container.keladi buku permainan.

- hos: dok
pengguna: tidak boleh dimakan
tugas:
- nama: Hentikan bekas http_server1
docker_container:
nama: http_server1
negeri: berhenti

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan stop_container.keladi fail.

Di sini, orang-orang Ansible docker_container modul digunakan untuk menghentikan bekas Docker http_server1.

Sekarang, jalankan stop_container.keladi buku main dengan arahan berikut:

$ play-playbook playbooks / stop_container.keladi

Seperti yang anda lihat, bekas Docker http_server1 tidak berjalan lagi pada hos Docker jauh saya.

$ dok dok

Anda boleh menyenaraikan semua bekas Docker (berjalan, dijeda, dihentikan) dengan arahan berikut:

$ docker ps --semua

Seperti yang anda lihat, bekas Docker yang dihentikan http_server1 disenaraikan.

Menghentikan Semua Bekas Docker Berjalan:

Sekiranya anda mahu menghentikan semua kontena Docker berjalan di host Docker anda menggunakan Ansible, maka bahagian ini adalah untuk anda.

Pertama, saya akan membuat 3 bekas Docker (pelayan1, pelayan2, dan pelayan3) supaya saya dapat menghentikan mereka semua menggunakan Ansible kemudian.

Untuk membuat pelayan1 Docker container, jalankan arahan berikut:

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

Untuk membuat pelayan2 Docker container, jalankan arahan berikut:

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

Untuk membuat pelayan3 Docker container, jalankan arahan berikut:

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

Seperti yang anda lihat, pelayan1, pelayan2, dan pelayan3 Bekas Docker berjalan di hos Docker jauh saya.

$ dok dok

Untuk menghentikan semua bekas Docker, buat buku main baru stop_all_container.keladi di anda buku permainan / direktori seperti berikut:

Buku main $ nano / stop_all_container.keladi

Sekarang, ketik baris berikut di stop_all_container.keladi fail buku main.

- hos: dok
pengguna: tidak boleh dimakan
tugas:
- name: Dapatkan senarai semua bekas yang sedang berjalan
docker_host_info:
bekas: Betul
daftar: docker_info
- nama: Hentikan semua bekas yang sedang berjalan
docker_container:
nama: 'item.Nama [0] | regex_replace ("^ /", "") '
negeri: berhenti
gelung: 'docker_info.bekas '

Untuk menyelamatkan stop_all_container.keladi fail, tekan + X diikuti oleh Y dan .

Di sini, saya telah menentukan 2 tugas.

Tugas pertama menggunakan Ansible docker_host_info modul untuk mendapatkan senarai semua bekas Docker yang sedang berjalan dan menyimpannya di pelabuhan_info pemboleh ubah.

Tugas kedua melengkung melalui pelabuhan_info.bekas array mencari nama kontena Docker yang sedang berjalan dan menghentikannya satu persatu.

Sekarang, jalankan stop_all_container.keladi buku main dengan arahan berikut:

$ ansible-playbook playbooks / stop_all_container.keladi

Buku permainan akan berjaya dijalankan seperti yang anda lihat dalam tangkapan skrin di bawah.

Seperti yang anda lihat, tidak ada bekas Docker yang sedang berjalan di host Docker terpencil saya.

$ dok dok

Anda boleh menyenaraikan semua bekas Docker (berjalan, dijeda, dihentikan) dengan arahan berikut:

$ docker ps --semua

Seperti yang anda lihat, bekas Docker yang dihentikan pelayan1, pelayan2, dan pelayan3 disenaraikan.

Hentikan Semua Kontena Docker Menjalankan Gambar Khusus:

Sekiranya anda ingin menghentikan semua kontena Docker menjalankan gambar Docker tertentu, maka bahagian ini sesuai untuk anda.

Pertama, mari buat beberapa bekas Docker dummy.

Saya akan membuat 2 bekas Docker (nginx1 dan nginx2) menggunakan Nginx Gambar Docker dan 2 bekas Docker (http1 dan http2) menggunakan httpd Gambar dok untuk demonstrasi.

Untuk membuat nginx1 Bekas dok menggunakan Nginx Imej Docker, jalankan arahan berikut:

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

Untuk membuat nginx2 Bekas dok menggunakan Nginx Imej Docker, jalankan arahan berikut:

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

Untuk membuat http1 Bekas dok menggunakan httpd Imej Docker, jalankan arahan berikut:

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

Untuk membuat http2 Bekas dok menggunakan httpd Imej Docker, jalankan arahan berikut:

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

Seperti yang anda lihat, nginx1, nginx2, http1, dan http2 Bekas Docker berjalan di hos Docker jauh saya.

Untuk menghentikan semua kontena Docker menjalankan gambar Docker tertentu (katakanlah, nginx), buat buku main Docker baru stop_all_image_containers.keladi di dalam buku permainan / direktori seperti berikut:

Buku main $ nano / stop_all_image_containers.keladi

Sekarang, ketik baris berikut di stop_all_image_containers.keladi fail.

- hos: dok
pengguna: tidak boleh dimakan
tugas:
- name: Dapatkan senarai semua bekas yang sedang berjalan
docker_host_info:
bekas: Betul
daftar: docker_info
- nama: Hentikan semua bekas yang menjalankan gambar nginx
docker_container:
nama: 'item.Nama [0] | regex_replace ("^ /", "") '
negeri: berhenti
bila: item.Imej == 'nginx'
gelung: 'docker_info.bekas '

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan stop_all_image_containers.keladi fail.

Di sini, saya telah menambah 2 tugas.

Tugas pertama menggunakan Ansible docker_host_info modul untuk mendapatkan senarai semua bekas Docker yang sedang berjalan dan menyimpannya di pelabuhan_info pemboleh ubah.

Tugas kedua melengkung melalui pelabuhan_info.bekas array mencari nama kontena Docker yang sedang berjalan dan menjalankan docker_container modul untuk setiap kontena yang sedang berjalan hanya jika nama gambar bekas itu Nginx. Kemudian, ia menghentikan bekas Docker yang dipadankan.

Dalam tugas kedua, baris berikut digunakan untuk memeriksa apakah kontena Docker menjalankan Nginx imej. Anda boleh menukarnya ke nama gambar Docker yang lain jika anda mahu.

Sekarang, jalankan stop_all_image_containers.keladi buku permainan seperti berikut:

$ ansible-playbook playbooks / stop_all_image_containers.keladi

Seperti yang anda lihat, hanya Nginx bekas (nginx1 dan nginx2) diubah (dihentikan). The httpd bekas (http1 dan http2) dilangkau.

Seperti yang anda lihat, tidak Nginx Bekas Docker berjalan di hos Docker jauh saya. Hanya yang httpd Bekas dok (http1 dan http2) adalah berlari.

$ dok dok

Anda boleh menyenaraikan semua bekas Docker (berjalan, dijeda, dihentikan) dengan arahan berikut:

$ docker ps --semua

Seperti yang anda lihat, bekas Docker yang dihentikan nginx1 dan nginx2 disenaraikan.

Kesimpulan:

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

Untuk mengetahui lebih lanjut mengenai modul ini, lawati halaman dokumentasi rasmi Ansible berikut.

[1] docker_container - Urus bekas docker
[2] docker_host_info - Mengambil fakta mengenai host docker dan senarai objek perkhidmatan

Cara Mengosongkan Ruang Hard Drive di Ubuntu
Memburu dan membersihkan fail besar dan aplikasi yang tidak digunakan secara manual boleh meletihkan. Aplikasi dan fail ini mungkin memerlukan ruang y...
Cara memasang dan menggunakan KeePass di Ubuntu
Pengurus kata laluan menjadikannya lebih mudah untuk memantau kata laluan yang rumit. Semua perkara yang dipertimbangkan, kebanyakan pengurus kata lal...
Cara Menyiapkan Hostname di Ubuntu 20.04 LTS
Nama host komputer adalah nama yang digunakan untuk mengenal pasti komputer secara unik dalam rangkaian. Biasanya, nama hos komputer adalah Nama Domai...