Προγραμματισμός

Εκπαιδευτικό πρόγραμμα Docker: Ξεκινήστε με τη δικτύωση Docker

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

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

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

Δίκτυο Docker: Δίκτυα Bridge

Δίκτυα Bridge Αφήστε τα κοντέινερ που τρέχουν στον ίδιο κεντρικό υπολογιστή Docker να επικοινωνούν μεταξύ τους. Μια νέα παρουσία του Docker έρχεται με ένα προεπιλεγμένο δίκτυο γέφυρας που ονομάζεται γέφυρακαι από προεπιλογή όλα τα κοντέινερ που έχουν ξεκινήσει συνδέονται σε αυτό.

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

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

  • Η ανάλυση DNS λειτουργεί αυτόματα μεταξύ κοντέινερ σε μια προσαρμοσμένη γέφυρα. Με αυτόν τον τρόπο, δεν χρειάζεται να χρησιμοποιείτε ακατέργαστες διευθύνσεις IP για να επικοινωνείτε μεταξύ τους όπως κάνετε στο γέφυρα γέφυρα. Τα κοντέινερ μπορούν να εντοπίσουν άλλα κοντέινερ μέσω DNS χρησιμοποιώντας το όνομα του κοντέινερ.
  • Τα κοντέινερ μπορούν να προστεθούν και να αφαιρεθούν από μια προσαρμοσμένη γέφυρα ενώ εκτελούνται.
  • Οι μεταβλητές περιβάλλοντος μπορούν να μοιραστούν μεταξύ κοντέινερ σε μια προσαρμοσμένη γέφυρα.

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

Δίκτυο Docker: Δίκτυα επικάλυψης

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

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

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

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

Δίκτυο Docker: Δίκτυο δικτύωσης

ο πλήθος Το πρόγραμμα οδήγησης δικτύου επιτρέπει στα κοντέινερ να έχουν τις στοίβες δικτύου τους να τρέχουν δίπλα-δίπλα με τη στοίβα στον κεντρικό υπολογιστή. Ένας διακομιστής Ιστού στη θύρα 80 σε ένα πλήθος-Το δικτυωτό κοντέινερ διατίθεται από τη θύρα 80 στον ίδιο τον κεντρικό υπολογιστή.

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

Δικτύωση Docker: Δικτύωση Macvlan

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

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

Δίκτυο Docker: Δημιουργία και διαχείριση δικτύων

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

$ docker network ls NETWORK ID NAME DRIVER SCOPE 2e0adaa0ce4a bridge bridge local 0de3da43b973 host host local 724a28c6d86d none null local

Για να δημιουργήσετε ένα δίκτυο, χρησιμοποιήστε το δημιουργώ υπο-εντολή μαζί με το --οδηγός σημαία για να υποδείξει ποιος οδηγός θα χρησιμοποιήσει (γέφυρα, επικάλυψη, macvlan):

$ docker network create --driver γέφυρα my-bridge 

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

Οι επιλογές για τη δημιουργία ενός δικτύου περιλαμβάνουν επίσης τον καθορισμό του υποδικτύου, το εύρος διευθύνσεων IP και την πύλη δικτύου, όπως θα συνέβαινε για τη δημιουργία ενός δικτύου με άλλα μέσα.

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

Μπορείτε επίσης να αντιστοιχίσετε ένα τρέχον κοντέινερ με ένα δίκτυο:

$ docker network connect γέφυρα my_container

Αυτό αποδίδειmy_container στο γέφυρα δίκτυο, διατηρώντας παράλληλα τις υπάρχουσες συνδέσεις δικτύου που έχει ήδη.

Όταν ένα κοντέινερ αποσυνδέεται, τυχόν δίκτυα που σχετίζονται με αυτό παραμένουν άθικτα. Εάν θέλετε να καταργήσετε τα δίκτυα με μη αυτόματο τρόπο, μπορείτε να το κάνετε με το docket δίκτυο rm εντολή ή χρήση δαμάσκηνο δικτύου λιμενεργάτη για να αφαιρέσετε όλα τα δίκτυα που δεν χρησιμοποιούνται πλέον στον κεντρικό υπολογιστή.

Δικτύωση Docker και Kubernetes

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

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

Μια πιθανή προσέγγιση στα μισά του σπιτιού είναι να χρησιμοποιήσετε μια προσθήκη Kubernetes Container Network Interface (CNI) που λειτουργεί με τα στοιχεία ελέγχου δικτύου του Docker. Όμως, αυτή είναι μια προσωρινή λύση στην καλύτερη περίπτωση. σε κάποιο σημείο, θα χρειαστεί να δημιουργήσετε τα έργα σας στο Kubernetes χρησιμοποιώντας τις δικές του μεταφορές δικτύωσης από μέσα προς τα έξω.