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

Εμπορευματοκιβώτια στον Windows Server 2016: Τι πρέπει να γνωρίζετε

Σε μια ιστορία για την οποία έγραψα Computerworld Τον Ιανουάριο, η οποία ήταν μια ανασκόπηση της τεχνικής προεπισκόπησης του Windows Server 2016, ανέφερα τη νέα υποστήριξη των Windows Server για κοντέινερ Hyper-V που είχε προστεθεί στην υποστήριξή του για κοντέινερ τύπου Docker (υπάρχει στο προϊόν beta από την προηγούμενη έκδοση beta ορόσημο ).

Ωστόσο, η παρουσία δύο επιλογών κοντέινερ έχει οδηγήσει σε πολλές ερωτήσεις. Ποια είναι η διαφορά μεταξύ ενός κοντέινερ Docker και ενός νέου κοντέινερ Hyper-V; Σε ποια σενάρια θα θέλατε να χρησιμοποιήσετε μια λύση δοχείου από την άλλη; Υπάρχουν ξεχωριστές μέθοδοι ανάπτυξης καθεμιάς από αυτές;

Η Microsoft δεν έχει καταφέρει να καταγράψει αυτές τις δύο επιλογές κοντέινερ και τα ίδια τα κοντέινερ είναι νέα στην πλατφόρμα του Windows Server. Δεδομένων αυτών των δύο παραγόντων, θέλω να αφιερώσω μια ολόκληρη ιστορία σε ποιες συγκεκριμένες λύσεις κοντέινερ παρέχει είτε ο Windows Server 2016 είτε σε μορφή προεπισκόπησης στις διαθέσιμες εκδόσεις, είτε υπόσχεται να παράσχει πριν από την ημερομηνία κυκλοφορίας του λογισμικού στην κατασκευή (RTM), πιθανότατα το δεύτερο εξάμηνο του 2016.

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Υπάρχουν δύο τύποι κοντέινερ που υπάρχουν στον Windows Server 2016 αυτήν τη στιγμή: κοντέινερ Windows Server και δοχεία Hyper-V. Και οι δύο υποστηρίζουν μόνο Windows Server. ούτε μπορεί να συνδυάσει και να ταιριάξει με Linux και / ή Unix, για παράδειγμα.

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

[Περαιτέρω ανάγνωση: Πρώτη ματιά: Εκτέλεση VM σε VM με δοχεία Hyper-V]

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

Λοιπόν, τώρα που γνωρίζετε ότι οποιαδήποτε από τις επιλογές κοντέινερ είναι η ίδια δουλειά για εσάς, πώς αποφασίζετε έξυπνα μεταξύ των δύο; Ουσιαστικά, εμπιστεύεται: Εάν εμπιστεύεστε τον κώδικα που εκτελείται μέσα στο κοντέινερ, τότε θα επιλέξετε ένα κοντέινερ διακομιστή των Windows (διαβάστε: παραδοσιακό, σε στυλ Docker). Εάν δεν εμπιστεύεστε τον κώδικα, ή δεν μπορείτε να τον επαληθεύσετε, ή δεν προήλθε από τους εσωτερικούς προγραμματιστές σας στον δικό σας οργανισμό, τότε το Hyper-V container είναι ο τρόπος να πάτε. Ας δούμε λεπτομερώς κάθε επιλογή.

Κοντέινερ Windows Server

Τα κοντέινερ των Windows Server είναι στην πραγματικότητα ένα μόνο μέρος του έργου κοντέινερ ανοιχτού κώδικα του Docker, οπότε αν σκεφτείτε ένα κοντέινερ τύπου Docker, θα σκεφτείτε ένα κοντέινερ Windows Server. Αυτά τα κοντέινερ είναι ουσιαστικά ένας νέος τύπος εικονικής μηχανής που με κάποιους τρόπους έχει λιγότερη απομόνωση από μια παραδοσιακή εικονική μηχανή - δηλαδή επειδή, σε πολλές περιπτώσεις, είναι κοινά πράγματα για όλα τα κοντέινερ που εκτελούνται σε έναν κεντρικό υπολογιστή. Μεταξύ αυτών των κοινόχρηστων στοιχείων είναι τα αρχεία λειτουργικού συστήματος, οι κατάλογοι και οι υπηρεσίες που εκτελούνται. Αυτό γίνεται για μεγαλύτερη απόδοση, επειδή εάν χρησιμοποιείτε τρία διαφορετικά κοντέινερ σε έναν κεντρικό υπολογιστή, όλα με την ίδια έκδοση του Windows Server με τους επισκέπτες, χρειάζεστε μόνο ένα αντίγραφο του καταλόγου C: \ Windows ανά πάσα στιγμή.

Αυτή η κοινή χρήση εξακολουθεί να διαχωρίζει τα κοντέινερ από οποιαδήποτε δεδομένη εφαρμογή που ενδέχεται να εκτελείται σε έναν κεντρικό υπολογιστή - αλλά μειώνει επίσης τα γενικά έξοδα και καθιστά τα κοντέινερ πιο ελαφριά. Έχετε περισσότερους χώρους ανά διακομιστή που εκτελούν κοντέινερ λόγω αυτής της κοινής χρήσης, σε αντίθεση με την εκτέλεση παραδοσιακών εικονικών μηχανών, οι οποίες είναι πιο απομονωμένες και δεν μοιράζονται τίποτα - και έτσι τείνουν να έχουν πολύ περισσότερη επανάληψη. Θα χρησιμοποιούσατε επίσης γενικά κοντέινερ Windows Server όταν ο κεντρικός υπολογιστής και ο επισκέπτης σας χρησιμοποιούν όλα το ίδιο λειτουργικό σύστημα για να επωφεληθούν από αυτήν την κοινή χρήση. Ως αποτέλεσμα, δεν μπορείτε να εκτελέσετε ένα κοντέινερ με διακομιστή Ubuntu που εκτελείται σε κεντρικό υπολογιστή Windows Server 2016. (Για αυτόν τον τύπο φόρτου εργασίας, θα χρησιμοποιούσατε παραδοσιακές εικονικές μηχανές. Τα εμπορευματοκιβώτια δεν θα ήταν κατάλληλα για αυτό. Θα χρησιμοποιούσατε μόνο VM, τα οποία υποστηρίζονται στα Windows από το 2008.)

Για ό, τι αξίζει, αυτή τη στιγμή τα δύο λειτουργικά συστήματα εικόνας-κοντέινερ που υποστηρίζονται από κοντέινερ Windows Server είναι ο διακομιστής Core (Windows χωρίς γραφικό περιβάλλον εργασίας χρήστη) και ο Windows Nano Server, ο μικροεπεξεργαστής ριζικά αναδιαμορφωμένος κατάλληλος για μικρούς ρόλους προσανατολισμένους στις μικροεπηρεσίες (Περισσότερα για τις μικροϋπηρεσίες λίγο.)

Πώς ταιριάζει λοιπόν το Docker σε όλα αυτά; Το Docker παρέχει ένα "επίπεδο διαχείρισης", αν θέλετε, API και κινητήρες για τη διαχείριση εμπορευματοκιβωτίων - ένα που γρήγορα έγινε βιομηχανικό πρότυπο, πιθανώς επειδή το ίδιο το Docker είναι ανοιχτού κώδικα και χρησιμοποιείται ευρέως. Το Docker Hub, διαθέσιμο για χρήση από οποιονδήποτε στο Διαδίκτυο, είναι ένας πραγματικός χώρος αποθήκευσης εφαρμογών σε στιλ αγοράς που όλες εκτελούνται σε κοντέινερ τύπου Docker.

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

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

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

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

Δοχεία Hyper-V

Αυτό είναι όταν αρχίζετε να βλέπετε δοχεία Hyper-V, τα οποία παντρεύονται το μοντέλο απομόνωσης και αφαίρεσης από παραδοσιακές εικονικές μηχανές με την ευελιξία, την εικόνα και τις εύκολες μορφές αναδιάταξης των κοντέινερ Windows Server τύπου Docker, μαζί με το Docker API και εργαλεία διαχείρισης που Συζήτησα στην προηγούμενη ενότητα.

Ο Mark Russinovich, CTO για το Microsoft Azure, το έθεσε έτσι σε μια καταχώριση ιστολογίου πέρυσι: Τα δοχεία Hyper-V "απομονώνουν εφαρμογές με τις εγγυήσεις που σχετίζονται με την παραδοσιακή εικονικοποίηση, αλλά με την ευκολία, τη μορφή εικόνας και το μοντέλο διαχείρισης των Windows Server Containers, συμπεριλαμβανομένων την υποστήριξη του Docker Engine. " Η διαφορά εδώ είναι το επίπεδο απομόνωσης: Τα κοντέινερ Hyper-V δεν μοιράζονται άμεσα αρχεία, διαδικασίες και υπηρεσίες του λειτουργικού συστήματος με τον κεντρικό υπολογιστή. Αντίθετα, ο Windows Server περιτυλίγει κάθε μικρή εικόνα κοντέινερ σε μια εικονική μηχανή πολύ χαμηλής επιβάρυνσης, η οποία επιτυγχάνει το όριο αφαίρεσης και εμπιστοσύνης που δεν διαθέτει ένα κοντέινερ Windows Server τύπου Docker.

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

Το μειονέκτημα αυτής της προσέγγισης: Υπάρχουν περισσότερα γενικά έξοδα. Λόγω της πρόσθετης απομόνωσης, περισσότερος κώδικας και διαδικασίες διπλασιάζονται. Υπάρχει επίσης το γεγονός ότι, παρόλο που το ελαφρύ περιτύλιγμα εικονικής μηχανής για ένα δοχείο Hyper-V είναι μικρό, προσθέτει πράγματι έναν "φόρο" στο κόστος εκτέλεσης μιας εικόνας κοντέινερ. Έτσι, ενώ μπορείτε να γεμίσετε έναν ισχυρό κεντρικό υπολογιστή γεμάτο με κοντέινερ Windows Server τύπου Docker, τα δοχεία Hyper-V θα περιορίζονται σε έναν μικρότερο αριθμό κοντέινερ, όλα τα υπόλοιπα θα είναι ίδια με το υλικό.

Και πάλι, αυτές οι εικόνες κοντέινερ θα υποστηρίζουν μόνο τον Windows Server. Παρόλο που υπάρχει απομόνωση, εξακολουθεί να υπάρχει κοινή ομοιότητα μεταξύ των εικόνων του κοντέινερ και του λειτουργικού συστήματος του κεντρικού υπολογιστή. Έτσι, εάν οι εικόνες κοντέινερ σας εκτελούν Linux, μια άλλη γεύση των Unix, BSD ή οποιουδήποτε άλλου εναλλακτικού λειτουργικού συστήματος, καμία από αυτές τις νέες δυνατότητες του Windows Server 2016 δεν θα σας ενδιαφέρει.

Η κατώτατη γραμμή: Κωδικός τρίτου μέρους, κωδικός αγοράς ή κωδικός που διαφορετικά δεν εμπιστεύεται πλήρως από οποιοδήποτε μέρος του οργανισμού σας θα πρέπει να εκτελείται σε δοχεία Hyper-V. Αυτές είναι επίσης η καλύτερη επιλογή για πολυσύνθετα δημόσια σύννεφα και άλλα παρόμοια περιβάλλοντα. Δεν χάνετε τίποτα άλλο από την ικανότητα και κερδίζετε τα οφέλη ασφαλείας από το να είστε πιο απομονωμένοι.

Δοχεία Docker

Τώρα για να αποδείξω ότι η επωνυμία είναι πάντα το πιο δύσκολο κομμάτι οποιασδήποτε τεχνολογίας, επιτρέψτε μου να εισαγάγω κοντέινερ Docker. Πάνω, ανέφερα ότι τα κοντέινερ των Windows Server αποτελούν τμήμα του έργου ανοιχτού κώδικα του Docker. Τα κοντέινερ Docker διαφέρουν από τα κοντέινερ του Windows Server. Τα κοντέινερ Windows Server μπορούν να χρησιμοποιήσουν όλη την τεχνολογία Docker, αλλά το υπάρχον σύνολο εργαλείων Docker για τη διαχείριση κοντέινερ Docker δεν λειτουργεί (τουλάχιστον σε αυτήν την έκδοση) με κοντέινερ Windows Server. Ούτε τα εργαλεία διαχείρισης κοντέινερ του Windows Server - σε αυτό το σημείο, μια δέσμη εντολών PowerShell - κάνουν οτιδήποτε χρήσιμο με τα ίδια τα κοντέινερ Docker.

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

Πού είναι η τεχνολογία σήμερα

Αυτήν τη στιγμή, η υποστήριξη κοντέινερ στον Windows Server 2016 είναι πολύ σε εξέλιξη. Υπάρχουν πολλά μετακινούμενα μέρη σε κοντέινερ: Κατάργηση εξαρτήσεων από αρχεία κεντρικού υπολογιστή και λειτουργικού συστήματος και συγκεκριμένες εκδόσεις και επίπεδα ενημέρωσης κώδικα. επιτυγχάνοντας τη σωστή απομόνωση και διασφαλίζοντας ότι κανένας κώδικας δεν μπορεί να παραβιάσει αυτό το όριο ασφάλειας και εμπιστοσύνης · κάνοντας την ιστορία του προγραμματιστή σωστή με εργαλεία και αυτοματισμούς που επιτρέπουν στους προγραμματιστές να συνεργάζονται με κοντέινερ στο προτιμώμενο περιβάλλον ολοκληρωμένης ανάπτυξης (IDE) και να "εξάγουν" τις εφαρμογές τους απευθείας στο κοντέινερ. Βεβαιωθείτε ότι τα εμπορευματοκιβώτια μπορούν να μετακινηθούν πάνω και κάτω στο δημόσιο σύννεφο χωρίς προβλήματα. κι αλλα.

Σε όλες αυτές τις περιπτώσεις, εξακολουθούν να υπάρχουν θανατηφόρα σφάλματα και σφάλματα για την επίλυση. Εάν τα κοντέινερ είναι ζωτικής σημασίας για τον οδικό χάρτη των προσφορών υπηρεσιών στο κατάστημά σας, τότε ίσως θελήσετε να ξεκινήσετε να δοκιμάζετε τις δυνατότητες των κοντέινερ Windows Server και των δοχείων Hyper-V, και ειδικά ελέγξτε τις διαθέσιμες εντολές PowerShell για να ενεργοποιήσετε τα κοντέινερ και να τα διαχειριστείτε σε κεντρικό υπολογιστή Windows Server 2016.

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

Η υποστήριξη κοντέινερ θα είναι μια συναρπαστική προσθήκη στην πλατφόρμα των Windows. Έχει απομείνει πολλή ιστορία για να γραφτεί και να ειπωθεί.

Αυτή η ιστορία, "Containers στον Windows Server 2016: Αυτό που πρέπει να γνωρίζετε" δημοσιεύθηκε αρχικά από την Computerworld.