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

Τι πρέπει να γνωρίζετε για το Docker στα Windows

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

Δεν προκαλεί έκπληξη, πολλοί από τους ομιλητές μίλησαν για το ρόλο των εμπορευματοκιβωτίων στους devops και τη συνεχή παράδοση. Ωστόσο, υπήρχε μια γενική εσφαλμένη αντίληψη της υποστήριξης των Windows για κοντέινερ, που χαρακτηρίζεται γενικά ως υποστήριξη για το Docker που εκτελείται σε Linux VMs.

Αυτό δεν είναι αλήθεια: Τα Windows έχουν τις δικές τους τεχνολογίες κοντέινερ, βασισμένες στο Docker, αλλά δίνουν μια μοναδική περιστροφή της Microsoft. Αυτή είναι πιθανώς η πηγή της σύγχυσης, με τα Windows 10 να προσθέτουν υποστήριξη για ένα υποσύστημα Linux και η Microsoft να προσθέτει εργαλεία Docker στον Windows Server 2016 περίπου την ίδια ώρα. Και οι δύο αποτελούν μέρος της προσέγγισης της Microsoft στην ανάπτυξη εφαρμογών cloud-native, η οποία αποτελεί βασικό στοιχείο της προόδου της πλατφόρμας Azure.

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

Κατανόηση των εμπορευματοκιβωτίων

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

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

Αρχικά μια τεχνολογία mainframe, κοντέινερ (ή τουλάχιστον παρόμοιες μορφές χώρου ονομάτων και απομόνωσης διεργασιών) θα μπορούσαν να βρεθούν σε πολλά λειτουργικά συστήματα Unix, συμπεριλαμβανομένων των Linux και Solaris.

Εσωτερικά δοχεία των Windows

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

Το Docker παραμένει στο επίκεντρο της στρατηγικής για τα κοντέινερ της Microsoft. Τα εργαλεία του, όπως το Swarm and Machine, χρησιμοποιούνται ευρέως και το προϊόν του Data Center μπορεί να διαχειριστεί κοντέινερ Windows και Linux. Μπορείτε ακόμη να χρησιμοποιήσετε τον πελάτη Docker από το κέλυφος Bash που είναι μέρος των Windows 10, εγκαθιστώντας το στο υποσύστημα Windows για Linux. Αυτή η προσέγγιση απαιτεί να κάνετε juggle πιστοποιητικά, επομένως ίσως προτιμάτε να χρησιμοποιείτε την εφαρμογή Windows του Docker ως εργαλείο ανάπτυξης και βασικής διαχείρισης τόσο για τα κοντέινερ των Windows όσο και του Linux.

Τα κοντέινερ των Windows είναι, όπως πολλές δυνατότητες του Windows Server, ένας ρόλος που μπορεί να εγκατασταθεί είτε μέσω του γνωστού διαλόγου δυνατοτήτων των Windows είτε μέσω του PowerShell. Η λήψη της διαδρομής PowerShell έχει τη μεγαλύτερη σημασία επειδή υπάρχει μια μονάδα OneGet PowerShell που εγκαθιστά τόσο τη δυνατότητα των κοντέινερ των Windows όσο και το Docker, με μόνο μία επανεκκίνηση που απαιτείται για να ξεκινήσετε. (Θα πρέπει επίσης να ενεργοποιήσετε την εικονικοποίηση Hyper-V εάν θέλετε να χρησιμοποιήσετε κοντέινερ Hyper-V.)

Υπάρχει ένας εκπληκτικός ενθουσιασμός για κοντέινερ Windows τόσο από προγραμματιστές όσο και από ομάδες επιχειρήσεων. Η Microsoft έχει αναφέρει περισσότερες από 1 εκατομμύριο λήψεις των βασικών εικόνων των Windows από τη βιβλιοθήκη κοντέινερ του Docker's Hub από τότε που ο Windows Server 2016 έγινε γενικά διαθέσιμος.

Δημιουργία και ανάπτυξη κοντέινερ σε Windows

Τα κοντέινερ δεν είναι μόνο ένα εργαλείο διακομιστή. Οι επαγγελματικές και εταιρικές εκδόσεις των Windows 10 Anniversary Edition υποστηρίζουν επίσης κοντέινερ. Θα πρέπει να τα ενεργοποιήσετε από το παράθυρο διαλόγου Λειτουργίες των Windows, αλλά μόλις ενεργοποιηθούν, μπορείτε να εγκαταστήσετε και να διαχειριστείτε κοντέινερ των Windows σε έναν υπολογιστή ανάπτυξης χρησιμοποιώντας το PowerShell. Επειδή τα Windows 10 υποστηρίζουν μόνο κοντέινερ Hyper-V, θα πρέπει επίσης να εγκαταστήσετε το Hyper-V.

Μόλις ενεργοποιηθούν τα κοντέινερ των Windows, θα πρέπει να κάνετε λήψη και εγκατάσταση του προγράμματος-πελάτη Docker Engine και Docker και εγκατάσταση των βασικών εικόνων που θα πρέπει να διαμορφώσετε για την εφαρμογή σας.

Η προτεινόμενη βασική εικόνα της Microsoft για κοντέινερ Windows νέας κατασκευής είναι ο Nano Server, η εφαρμογή διακομιστή με εστίαση χαμηλού αποτυπώματος στο cloud. Ο διακομιστής Nano έχει πολύ νόημα ως βάση κοντέινερ: Είναι μικρό και γρήγορο, χωρίς UI, επομένως είναι γρήγορο να αναπτυχθεί και σχετικά ασφαλές.

Μια σημαντική σημείωση: Παρόλο που μπορείτε να το χρησιμοποιήσετε για να φιλοξενήσετε χρόνους εκτέλεσης όπως το Node.js, ο διακομιστής Nano προορίζεται να φιλοξενήσει εφαρμογές .Net Core, συμπεριλαμβανομένου του ASP.Net Core, οπότε δεν θα λάβετε όλες τις δυνατότητες .Net που έχετε συνηθίσει . Υπάρχει αρκετή διαφορά από τον γνωστό Windows Server που ίσως είναι καλύτερο να θεωρήσετε τα κοντέινερ Windows που φιλοξενούνται από Nano Server ως εργαλείο για νέες εφαρμογές και όχι ως κεντρικό υπολογιστή για υπάρχοντα κώδικα.

Αυτές οι διαφορές εξηγούν γιατί πολλές επιχειρήσεις χρησιμοποιούν τον Windows Server Core ως βασική εικόνα. Αν και είναι μεγαλύτερο και χρειάζεται περισσότερος χρόνος για ανάπτυξη από τον Nano Server, ο Windows Server Core προσφέρει υποστήριξη για τα τρέχοντα SDK των Windows και μια πλήρη εφαρμογή .Net. Είναι πολύ πιο εύκολο να μετακινήσετε γρήγορα τον υπάρχοντα κώδικα στον Server Core, δίνοντάς σας την επιλογή, όπως ο Lead Program Manager για Windows Server και Hyper-V Containers, ο Taylor Brown το ονομάζει "lift and shift" από τους υπάρχοντες διακομιστές σε κοντέινερ, έτσι ώστε " επαναχρησιμοποιείται όπου θέλετε. Μόλις η εφαρμογή βρίσκεται σε κοντέινερ, οι προγραμματιστές μπορούν να την αποσυνθέσουν περαιτέρω. Για παράδειγμα, μετακίνηση συνδέσμων API στα δικά τους κοντέινερ που βασίζονται σε διακομιστές Nano για απλοποίηση της συντήρησης εφαρμογών.

Η υποστήριξη κοντέινερ είναι ενσωματωμένη στα εργαλεία των Windows στο πολύ χαμηλότερο επίπεδο, με τα κοντέινερ των Windows πλέον έναν στόχο ανάπτυξης για το Visual Studio 2017. Μπορείτε να δημιουργήσετε και να παραδώσετε εφαρμογές ως κοντέινερ, έτοιμα για δοκιμή. Κάνοντας τα κοντέινερ ένα απλό κλικ με το ποντίκι είναι ένα σημαντικό βήμα.

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

$config[zx-auto] not found$config[zx-overlay] not found