Δικτύωση Docker - Εξερευνήστε τον τρόπο με τον οποίο τα εμπορευματοκιβώτια επικοινωνούν μεταξύ τους



Μάθετε τα πάντα για τις δυνατότητες δικτύωσης του Docker με μια κατανόηση σχετικά με το Container Network Model και την υλοποίησή του με ένα Hands-On.

Στον σημερινό κόσμο, οι επιχειρήσεις έχουν αρχίσει να ενδιαφέρονται για εμπορευματοκιβώτια που απαιτούν ισχυρές δεξιότητες δικτύωσης για να διαμορφώσουν σωστά μια αρχιτεκτονική κοντέινερ, και έτσι, εισάγει την έννοια του Docker Networking

Σε αυτό το ιστολόγιο στο Docker Networking, θα διαβάσετε τα ακόλουθα θέματα:





Τι είναι το Docker;

Για να κατανοήσετε το Docker, πρέπει να γνωρίζετε για το ιστορικό του τρόπου με τον οποίο αναπτύχθηκαν οι εφαρμογές στο παρελθόν και μετά πώς αναπτύσσονται οι εφαρμογές χρησιμοποιώντας κοντέινερ τώρα.

Ανάπτυξη εφαρμογών με παλιό και νέο τρόπο - Docker Networking - Edureka



Όπως μπορείτε να δείτε στο παραπάνω διάγραμμα, ο παλιός τρόπος είχε εφαρμογές στον κεντρικό υπολογιστή.Έτσι, n αριθμός εφαρμογών μοιράζονται τις βιβλιοθήκες που υπάρχουν σε αυτό το λειτουργικό σύστημα.Όμως, με το κοντέινερ, το λειτουργικό σύστημα θα έχει έναν πυρήνα που είναι το μόνο πράγμα που θα είναι κοινό μεταξύ όλων των εφαρμογών.Έτσι, οι εφαρμογές δεν μπορούν να έχουν πρόσβαση στις βιβλιοθήκες του άλλου.

Ετσι, Λιμενεργάτης με απλούς όρους είναι μια ανοιχτή πλατφόρμα για ανάπτυξη, αποστολή και εκτέλεση εφαρμογών, επιτρέποντας στον χρήστη να διαχωρίζει εφαρμογές από υποδομές με τη βοήθεια εμπορευματοκιβώτια για γρήγορη παράδοση λογισμικού.

Λοιπόν, πώς αυτά τα δοχεία επικοινωνούν μεταξύ τους σε διάφορες καταστάσεις;



Λοιπόν, αυτό έρχεται μέσω του Docker Networking.

Δίκτυο Docker

Πριν βυθιστώ βαθιά στο Docker Networking, επιτρέψτε μου να σας δείξω τη ροή εργασίας του Docker.

Όπως μπορείτε να δείτε στο παραπάνω διάγραμμα. Ένας προγραμματιστής γράφει έναν κωδικό που ορίζει τις απαιτήσεις της εφαρμογής ή τις εξαρτήσεις σε ένα εύκολο γράψιμο Docker File και αυτό το Docker File παράγει Docker Images. Έτσι, οποιεσδήποτε εξαρτήσεις απαιτούνται για μια συγκεκριμένη εφαρμογή υπάρχουν σε αυτήν την εικόνα.

Τώρα, το Docker Containers δεν είναι τίποτα άλλο από την παρουσία χρόνου εκτέλεσης του Docker Image. Αυτές οι εικόνες μεταφορτώνονται στο Docker Hub (Git repository για Docker Images) που περιέχει δημόσια / ιδιωτικά αποθετήρια.

Έτσι, από τα δημόσια αποθετήρια, μπορείτε επίσης να τραβήξετε την εικόνα σας και να ανεβάσετε τις δικές σας εικόνες στο Docker Hub. Στη συνέχεια, από το Docker Hub, διάφορες ομάδες όπως οι ομάδες διασφάλισης ποιότητας ή παραγωγής θα τραβήξουν αυτήν την εικόνα και θα προετοιμάσουν τα δικά τους δοχεία. Αυτά τα μεμονωμένα κοντέινερ, επικοινωνούν μεταξύ τους μέσω ενός δικτύου για να εκτελέσουν τις απαιτούμενες ενέργειες, και αυτό δεν είναι παρά το Docker Networking.

Έτσι, μπορείτε να ορίσετε το Docker Networking ως ένα πέρασμα επικοινωνίας μέσω του οποίου όλα τα απομονωμένα κοντέινερ επικοινωνούν μεταξύ τους σε διάφορες καταστάσεις για να εκτελέσουν τις απαιτούμενες ενέργειες.

Ποιοι πιστεύετε ότι είναι οι στόχοι του Docker Networking;

Στόχοι δικτύωσης Docker

Ευκαμψία - Το Docker παρέχει ευελιξία επιτρέποντας σε οποιονδήποτε αριθμό εφαρμογών σε διάφορες πλατφόρμες να επικοινωνούν μεταξύ τους.

Διαγώνια πλατφόρμα - Το Docker μπορεί εύκολα να χρησιμοποιηθεί σε πολλαπλές πλατφόρμες που λειτουργεί σε διάφορους διακομιστές με τη βοήθεια του Docker Swarm Clusters.

Επεκτασιμότητα - Το Docker είναι ένα πλήρως κατανεμημένο δίκτυο, το οποίο επιτρέπει στις εφαρμογές να μεγαλώνουν και να κλιμακώνονται μεμονωμένα διασφαλίζοντας παράλληλα την απόδοση.

Αποκεντρωμένη - Το Docker χρησιμοποιεί ένα αποκεντρωμένο δίκτυο, το οποίο επιτρέπει τη δυνατότητα διάδοσης των εφαρμογών και εξαιρετικά διαθέσιμων. Σε περίπτωση που ένα κοντέινερ ή ένας κεντρικός υπολογιστής λείπει ξαφνικά από το σύνολο πόρων σας, μπορείτε είτε να δημιουργήσετε έναν επιπλέον πόρο είτε να μεταβιβάσετε σε υπηρεσίες που εξακολουθούν να είναι διαθέσιμες.

Φιλικό προς τον χρήστη - Το Docker διευκολύνει την αυτοματοποίηση της ανάπτυξης υπηρεσιών, καθιστώντας τις εύκολες στη χρήση στην καθημερινή ζωή.

Υποστήριξη - Το Docker προσφέρει υποστήριξη εκτός κουτιού. Έτσι, η δυνατότητα χρήσης του Docker Enterprise Edition και η απόκτηση όλης της λειτουργικότητας είναι πολύ εύκολη και απλή, καθιστά την πλατφόρμα Docker πολύ εύκολη στη χρήση.

Για να ενεργοποιήσετε τους παραπάνω στόχους, χρειάζεστε κάτι γνωστό ως Container Network Model.

Θέλετε να εξερευνήσετε διάφορα στάδια DevOps;

Μοντέλο δικτύου κοντέινερ (CNM)

Πριν σας πω τι είναι ακριβώς ένα μοντέλο δικτύου εμπορευματοκιβωτίων, επιτρέψτε μου να σας ενημερώσω για το Libnetwork που απαιτείται προτού καταλάβετε το CNM.

Το Libnetwork είναι μια βιβλιοθήκη ανοιχτού κώδικα Docker που εφαρμόζει όλες τις βασικές έννοιες που συνθέτουν το CNM.

Ετσι, Μοντέλο δικτύου κοντέινερ (CNM) τυποποιεί τα βήματα που απαιτούνται για την παροχή δικτύωσης για κοντέινερ που χρησιμοποιούν πολλά προγράμματα οδήγησης δικτύου. Το CNM απαιτεί ένα κατανεμημένο κατάστημα κλειδιού-τιμής, όπως κονσόλα, για την αποθήκευση της διαμόρφωσης δικτύου.

Το CNM διαθέτει διεπαφές για προσθήκες IPAM και προσθήκες δικτύου.

Τα API προσθηκών IPAM χρησιμοποιούνται για τη δημιουργία / διαγραφή ομαδοποιήσεων διευθύνσεων και την εκχώρηση / αφαίρεση διευθύνσεων IP κοντέινερ, ενώ τα API προσθηκών δικτύου χρησιμοποιούνται για τη δημιουργία / διαγραφή δικτύων και την προσθήκη / αφαίρεση κοντέινερ από δίκτυα.

Ένα CNM έχει βασιστεί κυρίως σε 5 αντικείμενα: Network Controller, Driver, Network, Endpoint και Sandbox.

Αντικείμενα μοντέλου δικτύου κοντέινερ

Ελεγκτής δικτύου: Παρέχει το σημείο εισόδου στο Libnetwork που εκθέτει απλά API για το Docker Engine να εκχωρεί και να διαχειρίζεται δίκτυα. Δεδομένου ότι το Libnetwork υποστηρίζει πολλαπλά ενσωματωμένα και απομακρυσμένα προγράμματα οδήγησης, το Network Controller επιτρέπει στους χρήστες να συνδέουν ένα συγκεκριμένο πρόγραμμα οδήγησης σε ένα δεδομένο δίκτυο.

Οδηγός: Είναι ιδιοκτήτης του δικτύου και είναι υπεύθυνος για τη διαχείριση του δικτύου με συμμετοχή πολλών προγραμμάτων οδήγησης για την ικανοποίηση διαφόρων περιπτώσεων χρήσης και σεναρίων ανάπτυξης.

Δίκτυο: Παρέχει συνδεσιμότητα μεταξύ μιας ομάδας τελικών σημείων που ανήκουν στο ίδιο δίκτυο και απομόνωση από τα υπόλοιπα. Έτσι, κάθε φορά που δημιουργείται ή ενημερώνεται ένα δίκτυο, το αντίστοιχο πρόγραμμα οδήγησης θα ειδοποιείται για το συμβάν.

Τελικό σημείο: Παρέχει τη συνδεσιμότητα για υπηρεσίες που εκτίθενται από ένα κοντέινερ σε ένα δίκτυο με άλλες υπηρεσίες που παρέχονται από άλλα κοντέινερ στο δίκτυο. Ένα τελικό σημείο αντιπροσωπεύει μια υπηρεσία και όχι απαραίτητα ένα συγκεκριμένο κοντέινερ, το Endpoint έχει παγκόσμιο πεδίο και σε ένα σύμπλεγμα.

Sandbox: Δημιουργήθηκε όταν οι χρήστες ζητούν να δημιουργήσουν ένα τελικό σημείο σε ένα δίκτυο. Ένα Sandbox μπορεί να έχει πολλαπλά τελικά σημεία συνδεδεμένα σε διαφορετικά δίκτυα που αντιπροσωπεύουν τη διαμόρφωση δικτύου του κοντέινερ, όπως διεύθυνση IP, διεύθυνση MAC, διαδρομές, DNS.

Αυτά ήταν λοιπόν τα 5 κύρια αντικείμενα του CNM.

Τώρα, επιτρέψτε μου να σας πω τα διάφορα προγράμματα οδήγησης δικτύου που εμπλέκονται στη δικτύωση Docker.

Θέλετε να πάρετε το DevOps που μαθαίνει σε επόμενο επίπεδο;

Προγράμματα οδήγησης δικτύου

Υπάρχουν κυρίως 5 προγράμματα οδήγησης δικτύου: Bridge, Host, None, Overlay, Macvlan

Γέφυρα: Το δίκτυο γέφυρας είναι ένα ιδιωτικό προεπιλεγμένο εσωτερικό δίκτυο που δημιουργήθηκε από το docker στον κεντρικό υπολογιστή. Έτσι, όλα τα κοντέινερ έχουν μια εσωτερική διεύθυνση IP και αυτά τα κοντέινερ μπορούν να έχουν πρόσβαση μεταξύ τους, χρησιμοποιώντας αυτήν την εσωτερική IP. Τα δίκτυα Bridge χρησιμοποιούνται συνήθως όταν οι εφαρμογές σας εκτελούνται σε αυτόνομα κοντέινερ που πρέπει να επικοινωνούν.

Πλήθος : Αυτό το πρόγραμμα οδήγησης αφαιρεί την απομόνωση δικτύου μεταξύ του κεντρικού υπολογιστή σύνδεσης και των κοντέινερ για χρήση απευθείας στο δίκτυο του κεντρικού υπολογιστή. Έτσι, με αυτό, δεν θα μπορείτε να εκτελείτε πολλά κοντέινερ ιστού στον ίδιο κεντρικό υπολογιστή, στην ίδια θύρα με τη θύρα που είναι πλέον κοινή σε όλα τα κοντέινερ στο δίκτυο κεντρικού υπολογιστή.

Κανένας : Σε αυτό το είδος δικτύου, τα κοντέινερ δεν είναι συνδεδεμένα σε κανένα δίκτυο και δεν έχουν πρόσβαση στο εξωτερικό δίκτυο ή σε άλλα κοντέινερ. Έτσι, αυτό το δίκτυο χρησιμοποιείται ότανθέλετε να απενεργοποιήσετε εντελώς τη στοίβα δικτύωσης σε ένα κοντέινερ και,δημιουργήστε μόνο μια συσκευή loopback.

τι είναι η διαφορά μεταξύ jquery και javascript

Επικάλυμμα : Δημιουργεί ένα εσωτερικό ιδιωτικό δίκτυο που εκτείνεται σε όλους τους κόμβους που συμμετέχουν στο σμήνος σμήνους. Έτσι, τα δίκτυα επικάλυψης διευκολύνουν την επικοινωνία μεταξύ μιας υπηρεσίας σμήνους και ενός αυτόνομου εμπορευματοκιβωτίου ή μεταξύ δύο αυτόνομων κοντέινερ σε διαφορετικά Docker Daemons.

Μακβλάν: Σας επιτρέπει να αντιστοιχίσετε μια διεύθυνση MAC σε ένα κοντέινερ, κάνοντάς το να εμφανίζεται ως φυσική συσκευή στο δίκτυό σας. Στη συνέχεια, ο δαίμονας Docker δρομολογεί την κυκλοφορία σε κοντέινερ από τις διευθύνσεις MAC τους. Το πρόγραμμα οδήγησης Macvlan είναι η καλύτερη επιλογή όταν αναμένεται να συνδεθείτε απευθείας στο φυσικό δίκτυο, αντί να δρομολογείτε μέσω της στοίβας του κεντρικού υπολογιστή του Docker.

Εντάξει, έτσι ήταν όλη η θεωρία που απαιτείται για την κατανόηση του Docker Networking. Τώρα, επιτρέψτε μου να προχωρήσω και να σας δείξω πρακτικά πώς δημιουργούνται τα δίκτυα και τα κοντέινερ επικοινωνούν μεταξύ τους.

Χέρια

Έτσι, με την υπόθεση ότι όλοι έχετε εγκαταστήσει το Docker στα συστήματά σας, έχω ένα σενάριο για να το δείξω.

Ας υποθέσουμε ότι θέλετε να αποθηκεύσετε το όνομα και το αναγνωριστικό των μαθημάτων, για τα οποία θα χρειαστείτε μια διαδικτυακή εφαρμογή. Βασικά, χρειάζεστε ένα κοντέινερ για την εφαρμογή ιστού και χρειάζεστε ένα ακόμη κοντέινερ ως MySQL για το backend, ότι το κοντέινερ MySQL θα πρέπει να είναι συνδεδεμένο με το κοντέινερ εφαρμογών ιστού.

Τι λες για να κάνω πρακτικά το παραπάνω αναφερόμενο παράδειγμα.

Βήματα που εμπλέκονται:

  • Αρχικοποιήστε το Docker Swarm για να σχηματίσετε ένα σύμπλεγμα Swarm.
  • Δημιουργήστε ένα δίκτυο επικάλυψης
  • Δημιουργήστε υπηρεσίες τόσο για την εφαρμογή Ιστού όσο και για τη MySQL
  • Συνδέστε τις εφαρμογές μέσω του δικτύου

Ας αρχίσουμε!

Βήμα 1: Αρχικοποιήστε το Docker Swarm στο μηχάνημα.

Docker Swarm init - διαφήμιση-addr 192.168.56.101

Η σημαία –advertise-addr ρυθμίζει τον κόμβο διαχειριστή για να δημοσιεύει τη διεύθυνσή του ως 192.168.56.101. Οι άλλοι κόμβοι στο σμήνος πρέπει να έχουν πρόσβαση στον διαχειριστή στη διεύθυνση IP.

Βήμα 2: Τώρα, εάν θέλετε να εγγραφείτε σε αυτόν τον κόμβο διαχειριστή στον κόμβο εργαζομένου, αντιγράψτε τον σύνδεσμο που λαμβάνετε όταν προετοιμάζετε το σμήνος στον κόμβο εργαζομένου.
Βήμα 3: Δημιουργήστε ένα δίκτυο επικάλυψης.

το δίκτυο docker δημιουργεί -d overlay myoverlaynetwork

Όπου το myoverlay είναι το όνομα δικτύου και το -d επιτρέπει στο Docker Daemon να τρέχει στο παρασκήνιο.

Βήμα 4.1: Δημιουργήστε μια υπηρεσία webapp1 και χρησιμοποιήστε το δίκτυο που έχετε δημιουργήσει για να αναπτύξετε αυτήν την υπηρεσία μέσω του σμήνους.

δημιουργία υπηρεσίας docker - όνομα webapp1 -d - δίκτυο myoverlaynetwork -p 8001: 80 hshar / webapp

Όπου -pείναι για προώθηση λιμένων,hsharείναι το όνομα λογαριασμού στο Docker Hub και το webapp είναι το όνομα της εφαρμογής ιστού που υπάρχει ήδη στο Docker Hub.

Βήμα 4.2: Τώρα, ελέγξτε εάν η υπηρεσία έχει δημιουργηθεί ή όχι.

υπηρεσία λιμενεργατών ls

Βήμα 5.1: Τώρα, δημιουργήστε μια υπηρεσία MySQL και χρησιμοποιήστε το δίκτυο που έχετε δημιουργήσει για να αναπτύξετε την υπηρεσία μέσω του σμήνους.

δημιουργία υπηρεσίας σύνδεσης - όνομα mysql -d - δίκτυο myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Βήμα 5.2: Τώρα, ελέγξτε εάν η υπηρεσία έχει δημιουργηθεί ή όχι.

υπηρεσία λιμενεργατών ls

Βήμα 6.1: Μετά από αυτό, ελέγξτε ποιο κοντέινερ εκτελείται στον κύριο κόμβο σας και μεταβείτε στο κοντέινερ hshar / webapp.

λιμενεργάτης ps

Βήμα 6.2: Έτσι, μπορείτε να δείτε ότι μόνο η υπηρεσία webapp βρίσκεται στον κόμβο διαχειριστή. Λοιπόν, μπείτε στο κοντέινερ webapp.

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

Η εντολή docker ps θα εμφανίσει και τα δύο κοντέινερ σας με το αντίστοιχο αναγνωριστικό κοντέινερ. Η δεύτερη εντολή θα επιτρέψει σε αυτό το κοντέινερ σε διαδραστική λειτουργία.

Βήμα 7: Τώρα, αλλάξτε το όνομα διακομιστή $ από localhost σε mysql και $ password από '' 'σε' edureka 'και επίσης αλλάξτε όλες τις συμπληρώσεις που απαιτούνται για τη βάση δεδομένων και αποθηκεύστε το αρχείο index.php χρησιμοποιώντας τη συντόμευση πληκτρολογίου Ctrl + x και μετά από αυτό y για αποθήκευση και πατήστε enter.

Βήμα 8: Τώρα, μεταβείτε στο κοντέινερ mysql που εκτελείται σε άλλο κόμβο.

docker exec -it container_id bash

Βήμα 9: Μόλις μπείτε στο κοντέινερ mysql, εισαγάγετε τις παρακάτω εντολές για να χρησιμοποιήσετε τη βάση δεδομένων στη MySQL.

Βήμα 9.1: Αποκτήστε πρόσβαση για να χρησιμοποιήσετε το κοντέινερ mysql.

mysql -u root -pedureka

Όπου -u αντιπροσωπεύει τον χρήστη και -p είναι ο κωδικός πρόσβασης του μηχανήματός σας.

Βήμα 9.2: Δημιουργήστε μια βάση δεδομένων στο mysql η οποία θα χρησιμοποιηθεί για τη λήψη δεδομένων από το webapp1.

ΔΗΜΙΟΥΡΓΙΑ ΔΕΔΟΜΕΝΩΝ HandsOn

Βήμα 9.3: Χρησιμοποιήστε τη δημιουργημένη βάση δεδομένων.

ΧΡΗΣΗ HandsOn

Βήμα 9.4: Δημιουργήστε έναν πίνακα σε αυτήν τη βάση δεδομένων που θα χρησιμοποιηθεί για τη λήψη δεδομένων από το webapp1.

ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΑΣ_στοιχεία_μαθήματος (όνομα_μαθήματος VARCHAR (10), μαθηματικό_ΑΡΧΕΙΟ (11))

Βήμα 9.5: Τώρα, βγείτε επίσης από τη MySQL και το κοντέινερ χρησιμοποιώντας την εντολή έξοδος .

Βήμα 10: Μεταβείτε στο πρόγραμμα περιήγησής σας και εισαγάγετε τη διεύθυνση ως localhost: 8001 / index.php . Αυτό θα ανοίξει την εφαρμογή ιστού σας. Τώρα, εισαγάγετε τις λεπτομέρειες των μαθημάτων και κάντε κλικ στο Κατάθεση ερωτήματος .

Βήμα 11: Μόλις κάνετε κλικ στο Υποβολή ερωτήματος, μεταβείτε στον κόμβο στον οποίο εκτελείται η υπηρεσία MySQL και, στη συνέχεια, μεταβείτε στο κοντέινερ.

docker exec -it container_id bash mysql -u root -pedureka ΧΡΗΣΗ HandsOn SHOW τραπέζια επιλέξτε * από τα στοιχεία_επισκόπησης

Αυτό θα σας δείξει την έξοδο όλων των μαθημάτων, από τα οποία έχετε συμπληρώσει τις λεπτομέρειες.

Εδώ, τελειώνω το ιστολόγιο Docker Networking. Ελπίζω να απολαύσατε αυτήν την ανάρτηση. Μπορείς να ελέγξεις άλλα ιστολόγια και στη σειρά, που ασχολούνται με τα βασικά του Docker.

Εάν θεωρήσατε σχετικό αυτό το ιστολόγιο κοντέινερ Docker, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με ένα δίκτυο περισσότερων από 450.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα Εκπαίδευσης Πιστοποίησης Edureka DevOps βοηθά τους μαθητές να αποκτήσουν εμπειρία σε διάφορες διαδικασίες και εργαλεία DevOps, όπως Puppet, Jenkins, Docker, Nagios, Ansible και GIT για την αυτοματοποίηση πολλαπλών βημάτων στο SDLC.

Ψάχνετε για πιστοποίηση στο DevOps;

Έχεις μια ερώτηση για μένα; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων και θα επικοινωνήσω μαζί σας.