Docker Networking - Jelajahi Bagaimana Container Berkomunikasi Satu Sama Lain



Pelajari semua tentang kapabilitas jaringan Docker dengan pemahaman tentang Model Jaringan Kontainer dan menerapkannya dengan Hands-On.

Di dunia saat ini, perusahaan menjadi tertarik dalam containerization yang membutuhkan keterampilan jaringan yang kuat untuk mengkonfigurasi arsitektur container dengan benar, dan dengan demikian, ini memperkenalkan konsep Docker Networking.

Di blog ini di Docker Networking, Anda akan membahas topik-topik berikut:





Apa Itu Docker?

Untuk memahami Docker, Anda perlu mengetahui tentang riwayat bagaimana aplikasi di-deploy sebelumnya dan kemudian bagaimana aplikasi di-deploy menggunakan container sekarang.

Penyebaran Aplikasi Dengan Cara Lama Dan Baru - Docker Networking - Edureka



Seperti yang Anda lihat pada diagram di atas, cara lama memiliki aplikasi pada host.Jadi, n sejumlah aplikasi berbagi pustaka yang ada di sistem operasi itu.Namun, dengan containerization, sistem operasi akan memiliki kernel yang merupakan satu-satunya hal yang sama di antara semua aplikasi.Jadi, aplikasi tidak dapat mengakses perpustakaan satu sama lain.

Begitu, Buruh pelabuhan dalam istilah sederhana adalah platform terbuka untuk mengembangkan, mengirimkan, dan menjalankan aplikasi, memungkinkan pengguna untuk memisahkan aplikasi dari infrastruktur dengan bantuan wadah untuk mengirimkan perangkat lunak dengan cepat.

Jadi, bagaimana wadah-wadah ini berkomunikasi satu sama lain dalam berbagai situasi?



Nah, itu datang melalui Docker Networking.

Jaringan Docker

Sebelum saya mendalami Jaringan Docker, izinkan saya menunjukkan kepada Anda alur kerja Docker.

apa itu pengadaan dalam manajemen proyek

Seperti yang Anda lihat pada diagram di atas. Pengembang menulis kode yang menetapkan persyaratan aplikasi atau dependensi dengan mudah untuk menulis File Docker dan File Docker ini menghasilkan Gambar Docker. Jadi, dependensi apa pun yang diperlukan untuk aplikasi tertentu ada di gambar ini.

Sekarang, Docker Containers tidak lain adalah contoh runtime dari Docker Image. Gambar-gambar ini diunggah ke Docker Hub (repositori Git untuk Gambar Docker) yang berisi repositori publik / pribadi.

Jadi, dari repositori publik, Anda dapat menarik gambar Anda juga dan Anda dapat mengunggah gambar Anda sendiri ke Docker Hub. Kemudian, dari Docker Hub, berbagai tim seperti tim Quality Assurance atau Production akan menarik image tersebut dan menyiapkan containernya sendiri. Wadah individu ini, berkomunikasi satu sama lain melalui jaringan untuk melakukan tindakan yang diperlukan, dan ini tidak lain adalah Docker Networking.

Jadi, Anda dapat mendefinisikan Jaringan Docker sebagai jalur komunikasi yang melaluinya semua kontainer yang terisolasi berkomunikasi satu sama lain dalam berbagai situasi untuk melakukan tindakan yang diperlukan.

Menurut Anda, apa tujuan dari Docker Networking?

Tujuan Jaringan Docker

Fleksibilitas - Docker memberikan fleksibilitas dengan memungkinkan sejumlah aplikasi di berbagai platform untuk berkomunikasi satu sama lain.

Lintas Platform - Docker dapat dengan mudah digunakan di lintas platform yang bekerja di berbagai server dengan bantuan Docker Swarm Clusters.

Skalabilitas - Docker adalah jaringan terdistribusi penuh, yang memungkinkan aplikasi tumbuh dan berkembang secara individual sambil memastikan kinerja.

Terdesentralisasi - Docker menggunakan jaringan terdesentralisasi, yang memungkinkan kemampuan untuk membuat aplikasi tersebar dan sangat tersedia. Jika penampung atau host tiba-tiba hilang dari kumpulan sumber daya Anda, Anda dapat memunculkan sumber daya tambahan atau meneruskan ke layanan yang masih tersedia.

Mudah digunakan - Docker memudahkan untuk mengotomatiskan penerapan layanan, membuatnya mudah digunakan dalam kehidupan sehari-hari.

Dukung - Docker menawarkan dukungan out-of-the-box. Jadi, kemampuan untuk menggunakan Docker Enterprise Edition dan mendapatkan semua fungsinya sangat mudah dan lugas, menjadikan platform Docker sangat mudah digunakan.

Untuk mengaktifkan sasaran di atas, Anda memerlukan sesuatu yang dikenal sebagai Model Jaringan Penampung.

Ingin Menjelajahi Berbagai Tahapan DevOps?

Model Jaringan Kontainer (CNM)

Sebelum saya memberi tahu Anda apa sebenarnya Model Jaringan Kontainer, izinkan saya memberi tahu Anda tentang Libnetwork yang diperlukan sebelum Anda memahami CNM.

Libnetwork adalah pustaka Docker open source yang mengimplementasikan semua konsep utama yang membentuk CNM.

Begitu, Model Jaringan Kontainer (CNM) menstandarkan langkah-langkah yang diperlukan untuk menyediakan jaringan untuk container menggunakan beberapa driver jaringan. CNM memerlukan penyimpanan nilai kunci terdistribusi seperti konsol untuk menyimpan konfigurasi jaringan.

CNM memiliki antarmuka untuk plugin IPAM dan plugin jaringan.

API plugin IPAM digunakan untuk membuat / menghapus kumpulan alamat dan mengalokasikan / membatalkan alokasi alamat IP kontainer, sedangkan API plugin jaringan digunakan untuk membuat / menghapus jaringan dan menambah / menghapus kontainer dari jaringan.

CNM terutama dibangun di atas 5 objek: Pengontrol Jaringan, Driver, Jaringan, Titik Akhir, dan Kotak Pasir.

Objek Model Jaringan Kontainer

Pengontrol Jaringan: Menyediakan titik masuk ke Libnetwork yang mengekspos API sederhana untuk Docker Engine untuk mengalokasikan dan mengelola jaringan. Karena Libnetwork mendukung beberapa driver bawaan dan jarak jauh, Pengontrol Jaringan memungkinkan pengguna untuk memasang driver tertentu ke jaringan tertentu.

Sopir: Memiliki jaringan dan bertanggung jawab untuk mengelola jaringan dengan memiliki beberapa driver yang berpartisipasi untuk memenuhi berbagai kasus penggunaan dan skenario penerapan.

Jaringan: Menyediakan konektivitas antara sekelompok titik akhir yang termasuk dalam jaringan yang sama dan mengisolasi dari yang lain. Jadi, setiap kali jaringan dibuat atau diperbarui, Pengemudi yang sesuai akan diberi tahu tentang acara tersebut.

membalikkan angka di java

Endpoint: Menyediakan konektivitas untuk layanan yang diekspos oleh penampung di jaringan dengan layanan lain yang disediakan oleh penampung lain di jaringan. Endpoint mewakili layanan dan tidak harus merupakan container tertentu, Endpoint juga memiliki cakupan global dalam cluster.

Bak pasir: Dibuat ketika pengguna meminta untuk membuat titik akhir di jaringan. Sandbox dapat memiliki beberapa titik akhir yang terpasang ke jaringan berbeda yang mewakili konfigurasi jaringan penampung seperti alamat IP, alamat MAC, rute, DNS.

Nah itulah 5 objek utama CNM.

Sekarang, izinkan saya memberi tahu Anda berbagai driver jaringan yang terlibat dalam jaringan Docker.

Ingin Mengambil Pembelajaran DevOps Ke Tingkat Berikutnya?

Driver Jaringan

Terutama ada 5 driver jaringan: Bridge, Host, None, Overlay, Macvlan

Jembatan: Jaringan jembatan adalah jaringan internal default pribadi yang dibuat oleh buruh pelabuhan di host. Jadi, semua kontainer mendapatkan alamat IP internal dan kontainer ini dapat mengakses satu sama lain, menggunakan IP internal ini. Jaringan Bridge biasanya digunakan saat aplikasi Anda berjalan di wadah mandiri yang perlu berkomunikasi.

Tuan rumah : Driver ini menghapus isolasi jaringan antara host buruh pelabuhan dan kontainer buruh pelabuhan untuk menggunakan jaringan host secara langsung. Jadi dengan ini, Anda tidak akan dapat menjalankan beberapa kontainer web pada host yang sama, pada port yang sama karena port tersebut sekarang umum untuk semua kontainer di jaringan host.

Tidak ada : Dalam jaringan jenis ini, container tidak terpasang ke jaringan apa pun dan tidak memiliki akses ke jaringan eksternal atau container lain. Jadi, jaringan ini digunakan saatAnda ingin sepenuhnya menonaktifkan tumpukan jaringan di wadah dan,hanya membuat perangkat loopback.

Hamparan : Membuat jaringan pribadi internal yang membentang di semua node yang berpartisipasi dalam cluster swarm. Jadi, jaringan Overlay memfasilitasi komunikasi antara swarm service dan container standalone, atau antara dua container standalone di Docker Daemons yang berbeda.

Macvlan: Memungkinkan Anda menetapkan alamat MAC ke penampung, membuatnya tampak sebagai perangkat fisik di jaringan Anda. Kemudian, daemon Docker merutekan lalu lintas ke kontainer berdasarkan alamat MAC mereka. Driver Macvlan adalah pilihan terbaik saat Anda diharapkan terhubung langsung ke jaringan fisik, daripada diarahkan melalui tumpukan jaringan host Docker.

Baiklah, jadi hanya itu teori yang diperlukan untuk memahami Docker Networking. Sekarang, izinkan saya melanjutkan dan menunjukkan kepada Anda secara praktis bagaimana jaringan dibuat dan wadah berkomunikasi satu sama lain.

Tangan di atas

Jadi, dengan asumsi bahwa Anda semua telah menginstal Docker di sistem Anda, saya memiliki skenario untuk ditampilkan.

Misalkan Anda ingin menyimpan nama kursus dan ID kursus, untuk itu Anda memerlukan aplikasi web. Pada dasarnya, Anda memerlukan satu container untuk aplikasi web dan Anda memerlukan satu container lagi sebagai MySQL untuk backend, container MySQL tersebut harus ditautkan ke container aplikasi web.

Bagaimana kalau saya menjalankan contoh yang disebutkan di atas secara praktis.

Langkah-langkah yang terlibat:

  • Inisialisasi Docker Swarm untuk membentuk cluster Swarm.
  • Buat Jaringan Overlay
  • Buat layanan untuk aplikasi web dan MySQL
  • Hubungkan aplikasi melalui jaringan

Ayo mulai!

Langkah 1: Inisialisasi Docker Swarm di mesin.

buruh pelabuhan init --advertise-addr 192.168.56.101

Bendera –advertise-addr mengkonfigurasi node manajer untuk mempublikasikan alamatnya sebagai 192.168.56.101. Node lain dalam gerombolan harus dapat mengakses manajer di alamat IP.

Langkah 2: Sekarang, jika Anda ingin menggabungkan node manajer ini ke node pekerja, salin tautan yang Anda dapatkan saat menginisialisasi swarm pada node pekerja.
Langkah 3: Buat jaringan overlay.

jaringan buruh pelabuhan membuat -d overlay myoverlaynetwork

Di mana myoverlay adalah nama jaringan dan -d memungkinkan Docker Daemon berjalan di latar belakang.

Langkah 4.1: Buat webapp1 layanan dan gunakan jaringan yang telah Anda buat untuk menyebarkan layanan ini melalui cluster swarm.

layanan buruh pelabuhan membuat --name webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp

Dimana -padalah untuk penerusan port,hsharadalah nama akun di Docker Hub, dan webapp adalah nama aplikasi web yang sudah ada di Docker Hub.

Langkah 4.2: Sekarang, periksa apakah layanan dibuat atau tidak.

layanan buruh pelabuhan ls

melewatkan nilai vs melewati referensi java

Langkah 5.1: Sekarang, buat layanan MySQL dan gunakan jaringan yang telah Anda buat untuk menyebarkan layanan melalui swarm cluster.

layanan buruh pelabuhan membuat --name mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Langkah 5.2: Sekarang, periksa apakah layanan dibuat atau tidak.

layanan buruh pelabuhan ls

Langkah 6.1: Setelah itu, periksa penampung mana yang berjalan di node master Anda dan masuk ke penampung hshar / webapp.

buruh pelabuhan ps

Langkah 6.2: Jadi, Anda dapat melihat bahwa hanya layanan webapp yang ada di node pengelola. Jadi, masuk ke penampung webapp.

buruh pelabuhan exec -it container_id bash nano var / www / html / index.php

Perintah docker ps akan mencantumkan kedua container Anda dengan ID containernya masing-masing. Perintah kedua akan mengaktifkan wadah itu dalam mode interaktif.

Langkah 7: Sekarang, ubah $ servername dari localhost ke mysql dan $ password dari “” menjadi “edureka”, dan juga ubah semua isi detail database yang diperlukan dan simpan file index.php Anda dengan menggunakan pintasan keyboard Ctrl + x dan setelah itu y untuk menyimpan, dan tekan enter.

Langkah 8: Sekarang, masuk ke wadah mysql yang berjalan di node lain.

buruh pelabuhan exec -it container_id bash

Langkah 9: Setelah Anda masuk ke dalam wadah mysql, masukkan perintah di bawah ini untuk menggunakan database di MySQL.

Langkah 9.1: Dapatkan akses untuk menggunakan kontainer mysql.

mysql -u root -pedureka

Di mana -u mewakili pengguna dan -p adalah kata sandi mesin Anda.

Langkah 9.2: Buat database di mysql yang akan digunakan untuk mendapatkan data dari webapp1.

BUAT HandsOn DATABASE

Langkah 9.3: Gunakan database yang dibuat.

GUNAKAN HandsOn

Langkah 9.4: Buat tabel di database ini yang akan digunakan untuk mendapatkan data dari webapp1.

BUAT TABEL course_details (course_name VARCHAR (10), course_id VARCHAR (11))

Langkah 9.5: Sekarang, keluar dari MySQL dan container juga menggunakan perintah keluar .

Langkah 10: Buka browser Anda dan masukkan alamat sebagai localhost: 8001 / index.php . Ini akan membuka aplikasi web Anda. Sekarang, masukkan detail kursus dan klik Kirim Kueri .

Langkah 11: Setelah Anda mengklik Submit Query, pergi ke node tempat layanan MySQL Anda berjalan dan kemudian masuk ke dalam container.

buruh pelabuhan exec -it container_id bash mysql -u root -pedureka GUNAKAN tabel HandsOn SHOW pilih * dari course_details

Ini akan menunjukkan kepada Anda hasil dari semua kursus, yang telah Anda isi secara detail.

Di sini, saya mengakhiri blog Docker Networking saya. Saya harap Anda menikmati posting ini. Anda bisa memeriksanya blog lain dalam seri juga, yang berhubungan dengan dasar-dasar Docker.

Jika Anda merasa blog Docker Container ini relevan, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 450.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi DevOps Edureka membantu pelajar mendapatkan keahlian dalam berbagai proses dan alat DevOps seperti Puppet, Jenkins, Docker, Nagios, Ansible, dan GIT untuk mengotomatiskan beberapa langkah di SDLC.

Mencari Sertifikasi di DevOps?

Punya pertanyaan untuk saya? Harap sebutkan di bagian komentar dan saya akan menghubungi Anda kembali.