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

Γιατί πρέπει να χρησιμοποιήσετε το Docker και τα δοχεία

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

Τα εμπορευματοκιβώτια Docker παρέχουν έναν τρόπο να πιάσετε το λογισμικό. Μπορείτε να χρησιμοποιήσετε το Docker για να ολοκληρώσετε μια εφαρμογή με τέτοιο τρόπο ώστε να αντιμετωπίσει τα προβλήματα ανάπτυξης και χρόνου εκτέλεσης - πώς να την εκθέσετε σε ένα δίκτυο, πώς να διαχειριστείτε τη χρήση του χώρου αποθήκευσης και της μνήμης και I / O, πώς να ελέγχετε τα δικαιώματα πρόσβασης - χειρίζονται έξω από την ίδια την εφαρμογή, και με τρόπο που να είναι συνεπής σε όλες τις εφαρμογές "με κοντέινερ". Μπορείτε να εκτελέσετε το κοντέινερ Docker σε οποιονδήποτε κεντρικό υπολογιστή συμβατό με λειτουργικό σύστημα (Linux ή Windows) που έχει εγκατεστημένο το χρόνο εκτέλεσης του Docker.

Το Docker προσφέρει πολλά άλλα οφέλη εκτός από αυτόν τον εύχρηστο εγκλεισμό, απομόνωση, φορητότητα και έλεγχο. Τα δοχεία Docker είναι μικρά (megabyte). Ξεκινούν αμέσως. Έχουν τους δικούς τους ενσωματωμένους μηχανισμούς για εκδόσεις και επαναχρησιμοποίηση στοιχείων. Μπορούν να κοινοποιηθούν εύκολα μέσω του δημόσιου Docker Hub ή του ιδιωτικού αποθετηρίου.

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

Πριν από τα δοχεία Docker

Εδώ και πολλά χρόνια, το εταιρικό λογισμικό χρησιμοποιείται συνήθως είτε σε "bare metal" (δηλαδή εγκατεστημένο σε λειτουργικό σύστημα που έχει πλήρη έλεγχο του υποκείμενου υλικού) είτε σε εικονική μηχανή (δηλαδή εγκατεστημένη σε λειτουργικό σύστημα που μοιράζεται το υποκείμενο υλικό με άλλα λειτουργικά συστήματα "επισκεπτών"). Φυσικά, η εγκατάσταση σε γυμνό μέταλλο έκανε το λογισμικό δύσκολα δύσκολο να μετακινηθεί και δύσκολο να ενημερωθεί - δύο περιορισμοί που καθιστούσαν δύσκολο για την πληροφορική να ανταποκριθεί άψογα στις αλλαγές στις επιχειρηματικές ανάγκες.

Στη συνέχεια ήρθε η εικονικοποίηση. Οι πλατφόρμες εικονικοποίησης (γνωστές και ως «εποπτευόμενοι») επέτρεψαν σε πολλές εικονικές μηχανές να μοιράζονται ένα μόνο φυσικό σύστημα, κάθε εικονική μηχανή που μιμείται τη συμπεριφορά ενός ολόκληρου συστήματος, πλήρης με το δικό του λειτουργικό σύστημα, αποθήκευση και I / O, μεμονωμένο τρόπο . Τώρα θα μπορούσε να ανταποκριθεί πιο αποτελεσματικά σε αλλαγές στις απαιτήσεις των επιχειρήσεων, επειδή τα VM θα μπορούσαν να κλωνοποιηθούν, να αντιγραφούν, να μεταναστεύσουν και να περιστραφούν πάνω ή κάτω για να καλύψουν τη ζήτηση ή να εξοικονομήσουν πόρους.

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

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

Οφέλη κοντέινερ Docker

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

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

Το Docker επιτρέπει πιο αποτελεσματική χρήση των πόρων του συστήματος

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

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

Το Docker επιτρέπει ταχύτερους κύκλους παράδοσης λογισμικού

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

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

Το Docker επιτρέπει τη φορητότητα εφαρμογών

Όπου εκτελείτε μια εταιρική εφαρμογή έχει σημασία - πίσω από το τείχος προστασίας, για να διατηρείτε τα πράγματα κοντά και ασφαλή. ή έξω σε ένα δημόσιο σύννεφο, για εύκολη πρόσβαση στο κοινό και υψηλή ελαστικότητα των πόρων. Επειδή τα κοντέινερ Docker ενσωματώνουν όλα όσα χρειάζεται να εκτελεί μια εφαρμογή (και μόνο αυτά τα πράγματα), επιτρέπουν στις εφαρμογές να κλείνουν εύκολα μεταξύ των περιβαλλόντων. Οποιοσδήποτε κεντρικός υπολογιστής με εγκατεστημένο το χρόνο εκτέλεσης του Docker - είτε πρόκειται για φορητό υπολογιστή προγραμματιστή είτε για δημόσια παρουσία cloud - μπορεί να εκτελέσει ένα κοντέινερ Docker.

Το Docker λάμπει για την αρχιτεκτονική των μικροϋπηρεσιών

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

Ένα από τα μοτίβα λογισμικού που διευκολύνουν τα δοχεία είναι οι μικροϋπηρεσίες, όπου οι εφαρμογές αποτελούνται από πολλά χαλαρά συνδεδεμένα στοιχεία. Με την αποσύνθεση παραδοσιακών, «μονολιθικών» εφαρμογών σε ξεχωριστές υπηρεσίες, οι μικροεπηρεσίες επιτρέπουν την κλιμάκωση, την τροποποίηση και την εξυπηρέτηση των διαφόρων τμημάτων μιας εφαρμογής line-of-business από ξεχωριστές ομάδες και σε ξεχωριστά χρονοδιαγράμματα, εάν αυτό ταιριάζει στις ανάγκες του επιχείρηση.

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

Προβλήματα Τα κοντέινερ Docker δεν επιλύονται

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

Το Docker δεν θα διορθώσει τα προβλήματα ασφαλείας σας

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

Το Docker δεν μετατρέπει τις εφαρμογές μαγικά σε μικροϋπηρεσίες

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

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

Το Docker δεν είναι υποκατάστατο εικονικών μηχανών

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

Η θήκη για δοχεία Docker

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