GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Manfaatkan Orkestrasi Kontainer dalam Tutorial Kawanan Docker ini

Pernahkah Anda bertanya-tanya apakah dapat mengatur container secara langsung dengan Docker alih-alih Kubernetes? Docker Swam bisa menjadi solusi yang Anda cari, dan Anda berada di jalur yang benar!

Dalam tutorial ini, Anda akan mempelajari cara mengelola beberapa container Docker dengan Docker Swarm.

Baca terus dan mulailah mengatur!

Prasyarat

Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut:

  • Tiga instans EC2 berjalan di Ubuntu 20.04.3 LTS.
  • Docker diinstal pada semua instans EC2 – Tutorial ini menggunakan versi 20.10.12.

Membangun dan Men-deploy Container ke Docker Swarm

Docker Swarm adalah cluster mesin virtual atau fisik yang menjalankan aplikasi Docker. Mode gerombolan memberikan kemampuan orkestrasi container bawaan Docker.

Namun sebelum Anda dapat mulai mengelola beberapa container, Anda memerlukan sistem/mesin yang berbeda (instance AWS EC2).

Anda dapat mempelajari konsep-konsep kunci dalam mode swarm sebelum melangkah lebih jauh ke dalam tutorial.

Dengan asumsi Anda telah menyiapkan instans EC2:

1. Buka browser web Anda dan masuk ke dasbor EC2 Anda. Lihat salah satu halaman ringkasan informasi instans EC2 Anda dan catat alamat IPv4 Publik, seperti yang ditunjukkan di bawah ini.

2. Selanjutnya, buka terminal Anda dan jalankan perintah di bawah ini untuk membuat simpul manajer di salah satu instans EC2 Anda. Pastikan Anda mengganti 18.237.102.75 dengan alamat IPv4 publik instans EC2 yang Anda catat sebelumnya (langkah pertama). Perintah di bawah ini menginisialisasi instance sebagai node manajer swarm Docker.

Node manajer mengalokasikan alamat IP ke tugas/wadah, menetapkan tugas ke node, mengeluarkan perintah untuk node pekerja untuk dijalankan.

Node manajer menjalankan fungsi manajemen klaster dan orkestrasi Docker Swarm. Tapi jangan khawatir. Anda akan belajar tentang node pekerja saat Anda melangkah lebih jauh dalam tutorial ini.

sudo docker swarm init --advertise-addr 18.237.102.75

Perhatikan perintah serupa yang ditunjukkan di bawah ini.

3. Jalankan perintah yang Anda catat sebelumnya (langkah kedua) untuk bergabung dengan swarm sebagai node pekerja. Sebuah node pekerja menerima dan menjalankan tugas-tugas yang diinstruksikan oleh node manajer.

4. Sekarang jalankan docker node perintah di bawah ini untuk memeriksa semua node yang ada di swarm tertentu. Perlu diingat bahwa hanya node manager yang dapat menjalankan perintah di bawah ini.

sudo docker node ls

5. Ulangi langkah kedua untuk membuat node manajer di instans EC2 lainnya.

Jika Anda tidak memiliki token bergabung lagi, Anda dapat menjalankan perintah di bawah ini di node manajer dan menampilkan token bergabung.

sudo docker swarm join-token worker

6. Selanjutnya jalankan docker service di bawah ini perintah untuk membuat layanan yang dikelola di Docker Swarm. Anda akan menerapkan gambar NGINX biasa dalam tutorial ini.

docker service perintah di bawah ini melakukan hal berikut:

  • Buat layanan bernama (--name ) nginx-service , tapi nama apa pun bisa digunakan.
  • Sebutkan jumlah --replicas aplikasi/wadah yang Anda inginkan. Dalam hal ini, nilai replika disetel ke tiga (3 ). Replika menyediakan ketersediaan tinggi untuk aplikasi Anda, menghilangkan waktu henti. Docker membagikan replika di antara tiga node yang tersedia saat membuat replika untuk layanan.
  • Sebutkan port (-p 80:80 ), lalu sebutkan nama gambar yang akan digunakan (nginx:latest ).
sudo docker service create --name nginx-service --replicas 3 -p 80:80 nginx:latest

7. Jalankan perintah di bawah ini untuk mengonfirmasi layanan (layanan nginx) yang Anda buat sebelumnya (langkah enam).

sudo docker service ls

8. Sekarang beralih ke setiap node dan jalankan perintah di bawah ini untuk membuat daftar container yang tersedia.

sudo docker ps

Anda akan melihat satu replika wadah yang Anda buat untuk setiap node, seperti yang ditunjukkan di bawah ini.

9. Terakhir, dapatkan alamat IP untuk setiap instans EC2 dan navigasikan ke alamat tersebut di browser web pilihan Anda.

Demikian pula, di bawah ini, Anda dapat memverifikasi bahwa setiap instance menyimpan replika aplikasi Anda.

Menyebarkan dan Menskalakan Aplikasi dengan Beberapa Layanan

Anda telah melalui penerapan satu layanan, tetapi bagaimana Anda menerapkan aplikasi dengan beberapa layanan? Docker Swarm juga bisa menyelesaikan pekerjaan. Anda akan menggunakan stack deploy perintah, yang menggunakan instruksi yang dinyatakan dalam file YAML yang akan Anda buat.

1. Buka node manager dan buat file YAML di editor teks pilihan Anda. Anda dapat memberi nama file secara berbeda, tetapi untuk demo ini, file tersebut disebut file-name.yml .

Isi nama-file.yml file dengan kode berikut, yang membuat dua layanan menggunakan gambar NGINX dan Ubuntu.

version: '3.3' # version of compose file
services:
  service1:
    image: 'nginx:latest' # latest version of NGINX image on Docker hub
    ports:
      - '8000:8080'
  service2:
    image: 'ubuntu' # Ubuntu image on docker hub

2. Selanjutnya, jalankan docker stack perintah di bawah ini untuk deploy layanan yang dibuat oleh file-name.yml file ke Docker Swarm. new-stack parameter adalah arbitrer, yang menamai tumpukan yang dibuat perintah untuk layanan.

sudo docker stack deploy -c file-name.yml new-stack

3. Jalankan perintah di bawah ini untuk membuat daftar layanan yang tersedia dan catat nama layanan yang Anda inginkan.

sudo docker service ls

4. Sekarang, jalankan perintah di bawah ini untuk membuat replika untuk tumpukan Anda. Empat (4 ) replika tepatnya untuk demo ini. Node manajer akan menetapkan node mana yang akan menampung replika.

Aplikasi yang sebelumnya Anda terapkan ke Docker Swarm (langkah kedua) hanya memiliki satu replika yang ditangani oleh node manajer. Untuk menskalakan layanan, Anda membuat empat replika layanan tersebut. Karena Anda hanya memiliki tiga node, satu node akan menangani dua replika, sedangkan node lainnya menangani masing-masing satu.

Anda juga dapat mengurangi skala layanan dengan mengurangi jumlah replika.

sudo docker service scale new-stack_service1=4

5. Terakhir, jalankan perintah docker service di bawah ini untuk melihat semua container yang saat ini menangani replika new-stack_service1 melayani.

sudo docker service ps new-stack_service1

Pada gambar di bawah, perhatikan bahwa satu node menangani dua replika.

Memperbarui Layanan di Swarm

Anda sebelumnya telah mempelajari cara men-deploy layanan, tetapi tahukah Anda bahwa mungkin untuk memperbarui layanan? Mungkin Anda ingin menguji versi layanan yang lebih lama. Jika demikian, Anda akan menggunakan update tag dan --image tandai untuk menyatakan versi layanan yang Anda inginkan, lalu sebutkan nama layanan yang akan diperbarui.

1. Jalankan perintah di bawah ini untuk memeriksa detail layanan yang sedang berjalan.

sudo docker service inspect --pretty nginx-service

Di bawah, Anda dapat melihat NGINX berjalan pada versi terbaru Versi:kapan.

2. Sekarang, jalankan perintah di bawah ini jika Anda lebih suka mengubah/memperbarui ke versi NGINX yang berbeda di layanan yang sedang berjalan (nginx-service ) untuk pengujian. Pastikan untuk mengganti nginx:1.20 dengan versi pilihan Anda.

sudo docker service update --image nginx:1.20 nginx-service

3. Terakhir, jalankan kembali perintah di bawah ini seperti yang Anda lakukan sebelumnya (langkah pertama) untuk memeriksa detail layanan yang sedang berjalan.

sudo docker service inspect --pretty nginx-service

Perhatikan di bawah ini bahwa layanan yang berjalan berhasil diperbarui.

Memperbarui Ketersediaan Node

Anda mungkin ingin bekerja pada node pekerja tertentu untuk, mungkin, membuat beberapa perubahan pada wadah, tetapi Anda ingin aplikasi Anda hidup. Bagaimana? Saat Anda mengerjakan simpul itu, drain node tersebut, sehingga tidak menerima tugas apa pun dari node manajer.

Di samping drain perintah, Anda perlu menambahkan update tag dan --availability tandai untuk mengubah ketersediaan node tertentu.

1. Jalankan docker node perintah di bawah ini untuk membuat daftar node yang tersedia dan catat ID node target Anda.

sudo docker node ls

2. Selanjutnya, jalankan perintah di bawah ini untuk mengubah --availability node dengan menguras (drain ). Ganti kseh5660n8xb3i2ojidzx0x13 dengan ID node target yang Anda catat di langkah pertama.

sudo docker node update --availability drain kseh5660n8xb3i2ojidzx0x13

3. Terakhir, jalankan kembali docker perintah di bawah ini seperti yang Anda lakukan pada langkah pertama untuk membuat daftar node yang tersedia. sudo docker node ls

sudo docker node ls

Di bawah ini, Anda dapat melihat ketersediaan node yang dipilih diubah (Tiriskan ), sehingga node tidak akan berpartisipasi dalam aktivitas yang terjadi di swarm.

Kesimpulan

Dalam tutorial ini, Anda telah belajar bagaimana memanfaatkan orkestrasi container dengan Docker Swarm. Anda telah memperoleh pengetahuan dasar tentang penskalaan aplikasi dengan banyak layanan dan melakukan operasi saat bekerja dengan Docker Swarm.

Pada titik ini, Anda sudah tahu cara mengelola wadah dan layanan Docker Anda di Docker Swarm. Jadi, bagaimana Anda berencana untuk memasukkan pengetahuan baru ini ke dalam orkestrasi wadah masa depan Anda? Mungkin mulai menyebarkan aplikasi Django dengan Docker Swarm?


Docker
  1. Beberapa Perintah DOCKER

  2. Cara Menetapkan IP Statis ke Wadah Docker

  3. Cara Mendaftar Kontainer Docker

  1. Pengantar Docker

  2. Cara Menjalankan MySQL Dalam Wadah Docker

  3. Cara SSH Ke Wadah Docker

  1. Tutorial Kontainer Docker MySQL:Cara Mengatur &Mengonfigurasi

  2. Cara Menginstal Vim di Wadah Docker

  3. Mengapa saya harus peduli dengan Kubernetes, Docker, dan Container Orchestration?