Rangkaian Docker - Terokai Bagaimana Kontena Berkomunikasi antara satu sama lain



Ketahui semua tentang keupayaan capaian Docker dengan pemahaman mengenai Model Rangkaian Container dan laksanakan dengan Hands-On.

Dalam dunia hari ini, perusahaan telah berminat dalam pengkontenaan yang memerlukan kemahiran rangkaian yang kuat untuk mengkonfigurasi seni bina kontena dengan betul, dan dengan itu, ini memperkenalkan konsep Docker Networking.

Dalam blog ini di Docker Networking, anda akan melalui topik berikut:





Apa itu Docker?

Untuk memahami Docker, anda perlu mengetahui sejarah bagaimana aplikasi digunakan sebelum dan kemudian bagaimana aplikasi disebarkan menggunakan kontena sekarang.

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



Seperti yang anda lihat dalam rajah di atas, cara lama mempunyai aplikasi pada hos.Oleh itu, sejumlah aplikasi berkongsi perpustakaan yang terdapat dalam sistem operasi tersebut.Tetapi, dengan containerization, sistem operasi akan mempunyai kernel yang merupakan satu-satunya perkara yang biasa berlaku di antara semua aplikasi.Oleh itu, aplikasi tidak dapat mengakses perpustakaan masing-masing.

Jadi, Docker secara sederhana adalah platform terbuka untuk mengembangkan, menghantar, dan menjalankan aplikasi, memungkinkan pengguna untuk memisahkan aplikasi dari infrastruktur dengan bantuan bekas untuk menyampaikan perisian dengan cepat.

Jadi, bagaimana bekas ini berkomunikasi antara satu sama lain dalam pelbagai situasi?



Nah, itu datang melalui Docker Networking.

Rangkaian Docker

Sebelum saya menyelami Docker Networking, izinkan saya menunjukkan kepada anda aliran kerja Docker.

Seperti yang anda lihat dalam rajah di atas. Pembangun menulis kod yang menetapkan keperluan aplikasi atau kebergantungan dalam Docker File yang mudah ditulis dan Docker File ini menghasilkan Docker Images. Jadi, kebergantungan apa pun yang diperlukan untuk aplikasi tertentu terdapat dalam gambar ini.

Kini, Docker Containers tidak lain dan tidak bukan hanyalah runtime Image Docker. Gambar-gambar ini dimuat naik ke Docker Hub (Git repositori untuk Docker Images) yang mengandungi repositori awam / swasta.

Oleh itu, dari repositori awam, anda juga boleh menarik gambar anda dan memuat naik gambar anda sendiri ke Docker Hub. Kemudian, dari Docker Hub, pelbagai pasukan seperti Jaminan Kualiti atau pasukan Pengeluaran akan menarik gambar itu dan menyiapkan bekas mereka sendiri. Wadah individu ini, berkomunikasi antara satu sama lain melalui rangkaian untuk melakukan tindakan yang diperlukan, dan ini hanyalah Docker Networking.

Oleh itu, anda boleh mendefinisikan Docker Networking sebagai jalan komunikasi di mana semua bekas terpencil berkomunikasi antara satu sama lain dalam pelbagai situasi untuk melakukan tindakan yang diperlukan.

Apa yang anda fikir adalah matlamat Docker Networking?

Matlamat Rangkaian Docker

Kelenturan - Docker memberikan fleksibiliti dengan membolehkan sebilangan aplikasi pada pelbagai platform berkomunikasi antara satu sama lain.

Merentas Pelantar - Docker dapat digunakan dengan mudah dalam platform silang yang berfungsi di pelbagai pelayan dengan bantuan Docker Swarm Clusters.

Skalabiliti - Docker adalah rangkaian yang diedarkan sepenuhnya, yang membolehkan aplikasi berkembang dan skala secara individu sambil memastikan prestasi.

Desentralisasi - Docker menggunakan rangkaian yang terdesentralisasi, yang memungkinkan kemampuan untuk menyebarkan aplikasi dan sangat tersedia. Sekiranya bekas atau hos tiba-tiba hilang dari kumpulan sumber anda, anda boleh membawa sumber tambahan atau menyampaikan ke perkhidmatan yang masih ada.

Mesra pengguna - Docker memudahkan untuk mengotomatisasi penggunaan perkhidmatan, menjadikannya mudah digunakan dalam kehidupan sehari-hari.

Sokongan - Docker menawarkan sokongan di luar kotak. Oleh itu, kemampuan menggunakan Docker Enterprise Edition dan mendapatkan semua fungsi sangat mudah dan mudah, menjadikan platform Docker menjadi sangat mudah digunakan.

Untuk mengaktifkan matlamat di atas, anda memerlukan sesuatu yang dikenali sebagai Container Network Model.

Ingin Meneroka Pelbagai Peringkat DevOps?

Model Rangkaian Kontena (CNM)

Sebelum saya memberitahu anda apa sebenarnya Model Rangkaian Container, izinkan saya memberi penerangan mengenai Libnetwork yang diperlukan sebelum anda memahami CNM.

pengaturcaraan sas pengenalan konsep asas

Libnetwork adalah perpustakaan Docker sumber terbuka yang menerapkan semua konsep utama yang membentuk CNM.

Jadi, Model Rangkaian Kontena (CNM) menyeragamkan langkah-langkah yang diperlukan untuk menyediakan rangkaian untuk kontena yang menggunakan pelbagai pemacu rangkaian. CNM memerlukan kedai nilai kunci yang diedarkan seperti konsol untuk menyimpan konfigurasi rangkaian.

CNM mempunyai antara muka untuk pemalam IPAM dan pemalam rangkaian.

API plugin IPAM digunakan untuk membuat / menghapus kumpulan alamat dan memperuntukkan / menyahpindah alamat IP kontena, sedangkan API plugin rangkaian digunakan untuk membuat / menghapus rangkaian dan menambah / mengeluarkan kontena dari rangkaian.

CNM telah dibina berdasarkan 5 objek: Pengawal Rangkaian, Pemandu, Rangkaian, Titik Akhir, dan Kotak Pasir.

Objek Model Rangkaian Kontena

Pengawal Rangkaian: Menyediakan titik masuk ke Libnetwork yang memperlihatkan API mudah untuk Docker Engine untuk memperuntukkan dan menguruskan rangkaian. Oleh kerana Libnetwork menyokong pelbagai pemacu dalaman dan jarak jauh, Pengawal Rangkaian membolehkan pengguna melampirkan pemacu tertentu ke rangkaian tertentu.

Pemandu: Memiliki rangkaian dan bertanggungjawab untuk menguruskan rangkaian dengan mempunyai beberapa pemandu yang berpartisipasi untuk memenuhi pelbagai kes penggunaan dan senario penggunaan.

Rangkaian: Menyediakan hubungan antara sekumpulan titik akhir yang tergolong dalam rangkaian yang sama dan mengasingkan dari yang lain. Oleh itu, setiap kali rangkaian dibuat atau dikemas kini, Pemandu yang sesuai akan diberitahu mengenai acara tersebut.

Titik Akhir: Menyediakan kesambungan untuk perkhidmatan yang terdedah oleh kontena dalam rangkaian dengan perkhidmatan lain yang disediakan oleh kontena lain dalam rangkaian. Titik akhir mewakili perkhidmatan dan tidak semestinya wadah tertentu, Endpoint mempunyai skop global dalam kluster juga.

Kotak pasir: Dicipta semasa pengguna meminta untuk membuat titik akhir pada rangkaian. Kotak Pasir boleh mempunyai beberapa titik akhir yang dilampirkan ke rangkaian yang berbeza yang mewakili konfigurasi rangkaian kontena seperti alamat IP, alamat MAC, laluan, DNS.

Jadi, itu adalah 5 objek utama CNM.

Sekarang, izinkan saya memberitahu anda pelbagai pemacu rangkaian yang terlibat dalam rangkaian Docker.

Ingin Mengambil Pembelajaran DevOps Ke Tahap Berikutnya?

Pemacu Rangkaian

Terdapat terutamanya 5 pemacu rangkaian: Bridge, Host, None, Overlay, Macvlan

Jambatan: Rangkaian jambatan adalah rangkaian dalaman lalai peribadi yang dibuat oleh docker pada hos. Jadi, semua kontena mendapat alamat IP dalaman dan kontena ini dapat saling mengakses, menggunakan IP dalaman ini. Rangkaian Bridge biasanya digunakan ketika aplikasi anda berjalan dalam wadah mandiri yang perlu berkomunikasi.

Tuan rumah : Pemacu ini menghilangkan pengasingan rangkaian antara host docker dan container docker untuk menggunakan rangkaian host secara langsung. Oleh itu, anda tidak akan dapat menjalankan banyak kontena web pada host yang sama, pada port yang sama dengan port yang sekarang biasa digunakan oleh semua container di rangkaian host.

Tiada : Dalam rangkaian seperti ini, kontena tidak terpasang ke rangkaian mana pun dan tidak mempunyai akses ke rangkaian luaran atau kontena lain. Jadi, rangkaian ini digunakan ketikaanda mahu mematikan sepenuhnya rangkaian rangkaian pada bekas dan,hanya buat peranti gelung balik.

Lapisan : Membuat rangkaian peribadi dalaman yang merangkumi semua nod yang berpartisipasi dalam kelompok kawanan. Oleh itu, rangkaian Overlay memudahkan komunikasi antara perkhidmatan kawanan dan wadah mandiri, atau antara dua kontena mandiri pada Docker Daemons yang berbeza.

cara menetapkan jalan untuk java

Macvlan: Membolehkan anda memberikan alamat MAC ke bekas, menjadikannya sebagai peranti fizikal di rangkaian anda. Kemudian, daemon Docker mengarahkan lalu lintas ke kontena dengan alamat MAC mereka. Pemacu Macvlan adalah pilihan terbaik apabila anda diharapkan dapat disambungkan secara langsung ke rangkaian fizikal, dan bukannya diarahkan melalui timbunan rangkaian host Docker.

Baiklah, itulah semua teori yang diperlukan untuk memahami Docker Networking. Sekarang, izinkan saya meneruskan dan menunjukkan kepada anda secara praktikal bagaimana rangkaian dibuat dan kontena berkomunikasi antara satu sama lain.

Hands-On

Oleh itu, dengan anggapan bahawa anda semua telah memasang Docker pada sistem anda, saya mempunyai senario untuk dipamerkan.

Katakan anda ingin menyimpan nama kursus dan ID kursus, yang mana anda memerlukan aplikasi web. Pada dasarnya, anda memerlukan satu bekas untuk aplikasi web dan anda memerlukan satu bekas lagi sebagai MySQL untuk backend, bahawa wadah MySQL harus dihubungkan ke wadah aplikasi web.

Bagaimana saya melaksanakan contoh yang dinyatakan di atas secara praktikal.

Langkah-langkah yang terlibat:

  • Memulakan Docker Swarm untuk membentuk kelompok Swarm.
  • Buat Rangkaian Overlay
  • Buat perkhidmatan untuk kedua-dua aplikasi web dan MySQL
  • Sambungkan aplikasi melalui rangkaian

Mari kita mulakan!

Langkah 1: Memulakan Docker Swarm pada mesin.

dok kawanan masuk - iklan-addr 192.168.56.101

Bendera –advertise-addr mengkonfigurasi nod pengurus untuk menerbitkan alamatnya sebagai 192.168.56.101. Node lain dalam kawanan mesti dapat mengakses pengurus di alamat IP.

Langkah 2: Sekarang, jika anda mahu bergabung dengan simpul pengurus ini ke simpul pekerja, salin pautan yang anda dapat ketika anda memulakan kawanan simpul pekerja.
Langkah 3: Buat rangkaian tindanan.

rangkaian pelabuhan membuat -d overlay myoverlaynetwork

Di mana myoverlay adalah nama rangkaian dan -d membolehkan Docker Daemon berjalan di latar belakang.

Langkah 4.1: Buat webapp1 perkhidmatan dan gunakan rangkaian yang telah anda buat untuk menyebarkan perkhidmatan ini melalui kelompok kawanan.

perkhidmatan docker buat --nama webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp

Di mana -padalah untuk pemajuan pelabuhan,hsharadalah nama akaun di Docker Hub, dan webapp adalah nama aplikasi web yang sudah ada di Docker Hub.

Langkah 4.2: Sekarang, periksa sama ada perkhidmatan itu dibuat atau tidak.

perkhidmatan buruh pelabuhan ls

Langkah 5.1: Sekarang, buat perkhidmatan MySQL dan gunakan rangkaian yang telah anda buat untuk menyebarkan perkhidmatan melalui kelompok kawanan.

perkhidmatan docker buat --nama mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Langkah 5.2: Sekarang, periksa sama ada perkhidmatan itu dibuat atau tidak.

perkhidmatan buruh pelabuhan ls

Langkah 6.1: Selepas itu, periksa bekas mana yang berjalan di nod utama anda dan masuk ke bekas hshar / webapp.

dok dok

Langkah 6.2: Oleh itu, anda dapat melihat bahawa hanya perkhidmatan webapp yang berada di nod pengurus. Jadi, masuk ke dalam wadah webapp.

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

Perintah docker ps akan menyenaraikan kedua-dua bekas anda dengan id kontena masing-masing. Perintah kedua akan membolehkan wadah itu dalam mod interaktif.

Langkah 7: Sekarang, ubah $ servername dari localhost ke mysql dan $ password dari '' 'menjadi' edureka ', dan juga ubah semua isi butiran pangkalan data yang diperlukan dan simpan fail index.php anda dengan menggunakan pintasan papan kekunci Ctrl + x dan selepas itu y untuk menyimpan, dan tekan enter.

Langkah 8: Sekarang, masuk ke bekas mysql yang berjalan di nod lain.

docker exec -it container_id bash

Langkah 9: Sebaik sahaja anda masuk ke dalam bekas mysql, masukkan arahan di bawah untuk menggunakan pangkalan data di MySQL.

Langkah 9.1: Dapatkan akses untuk menggunakan wadah mysql.

mysql -u root -pedureka

Di mana -u mewakili pengguna dan -p adalah kata laluan mesin anda.

pindahkan fail ke contoh tetingkap ec2

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

BUAT DATABASE HandsOn

Langkah 9.3: Gunakan pangkalan data yang dibuat.

GUNAKAN HandsOn

Langkah 9.4: Buat jadual dalam pangkalan data ini yang akan digunakan untuk mendapatkan data dari webapp1.

BUAT JADUAL_detail kursus (nama_nama kursus VARCHAR (10), kursus_id

Langkah 9.5: Sekarang, keluar dari MySQL dan bekas juga menggunakan arahan jalan keluar .

Langkah 10: Pergi ke penyemak imbas anda dan masukkan alamat sebagai localhost: 8001 / index.php . Ini akan membuka aplikasi web anda. Sekarang, masukkan butiran kursus dan klik Hantar Pertanyaan .

Langkah 11: Sebaik sahaja anda mengklik Submit Query, pergi ke nod di mana perkhidmatan MySQL anda dijalankan dan kemudian masuk ke dalam bekas.

docker exec -it container_id bash mysql -u root -pedureka USE HandsOn SHOW jadual pilih * dari course_details

Ini akan menunjukkan kepada anda output semua kursus, yang mana anda telah mengisi butirannya.

Di sini, saya mengakhiri blog Rangkaian Docker saya. Saya harap anda telah menikmati siaran ini. Anda boleh menyemak blog lain dalam siri ini juga, yang berkaitan dengan asas-asas Docker.

Sekiranya anda mendapati blog Docker Container ini relevan, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 450,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Persijilan Edureka DevOps membantu pelajar memperoleh kepakaran dalam pelbagai proses dan alat DevOps seperti Boneka, Jenkins, Docker, Nagios, Ansible, dan GIT untuk mengautomasikan pelbagai langkah dalam SDLC.

Mencari Pensijilan di DevOps?

Ada soalan untuk saya? Sila sebutkan di bahagian komen dan saya akan menghubungi anda.