Μια σύντομη εισαγωγή στα κοντέινερ των Windows. Κατανόηση των κοντέινερ Τα κοντέινερ διακομιστών των Windows

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

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

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

Για να ακολουθήσετε τις οδηγίες σε αυτό το άρθρο, θα χρειαστείτε πρόσβαση σε έναν φυσικό ή εικονικό διακομιστή με Windows Server 2016. Μπορείτε να κάνετε λήψη ενός αντιγράφου αξιολόγησης από τον ιστότοπο της Microsoft ή να ρυθμίσετε μια εικονική μηχανή στο Microsoft Azure. Θα χρειαστείτε επίσης ένα δωρεάν Docker ID, το οποίο μπορείτε να αποκτήσετε με την εγγραφή σας.

Εγκαταστήστε το Docker Engine

Το πρώτο βήμα είναι να εγκαταστήσετε την υποστήριξη Docker στον Windows Server 2016.

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

Για να εγκαταστήσετε το Docker στον Windows Server, εκτελέστε το ακόλουθο cmdlet PowerShell. Θα σας ζητηθεί να εγκαταστήσετε το NuGet, το οποίο πραγματοποιεί λήψη της λειτουργικής μονάδας Docker PowerShell από ένα αξιόπιστο διαδικτυακό αποθετήριο.

Install-Module -Name DockerMsftProvider -Force

Τώρα χρησιμοποιήστε Εγκατάσταση-Πακέτο cmdlet για την εγκατάσταση της μηχανής Docker στον Windows Server. Σημειώστε ότι απαιτείται επανεκκίνηση στο τέλος της διαδικασίας.

Install-Package -Name docker - ProviderName DockerMsftProvider -Force Restart-Computer -Force

Μετά την επανεκκίνηση του διακομιστή, εκτελέστε ξανά την προτροπή PowerShell και βεβαιωθείτε ότι το Docker είναι εγκατεστημένο εκτελώντας την ακόλουθη εντολή:

έκδοση docker

Κατεβάστε μια εικόνα από το Docker και ξεκινήστε μια διαδικασία κοντέινερ

Τώρα που έχει εγκατασταθεί η μηχανή Docker, ας τραβήξουμε την προεπιλεγμένη εικόνα του Windows Server Core από το Docker:

Docker pull microsoft/windowsServerCore

Τώρα που η εικόνα έχει μεταφορτωθεί στον τοπικό διακομιστή, ξεκινήστε τη διαδικασία κοντέινερ χρησιμοποιώντας εκτόξευση docker:

Το Docker εκτελεί το Microsoft /windowsServerCore

Δημιουργήστε μια νέα εικόνα

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

Χορηγοί

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

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

"ΑΠΟ ΤΟ Microsoft /windowsservercore `n CMD echo Hello World!" | docker build -t mydockerid /windows-test-image -

Αφού το Docker ολοκληρώσει τη δημιουργία της νέας εικόνας, ελέγξτε τη λίστα με τις διαθέσιμες εικόνες στον τοπικό διακομιστή. Θα πρέπει να δείτε και τα δύο. Microsoft /windowsServerCoreκαι mydockerid /windows-test-imagesστη λίστα.

εικόνα αποβάθρας

Τώρα ξεκινήστε μια νέα εικόνα στο κοντέινερ, θυμηθείτε να την αντικαταστήσετε mydockeridμε το Docker ID σας και θα πρέπει να δείτε Γειά σου Κόσμε!Εμφανιστείτε στην έξοδο:

docker run mydockerid /windows-test-images

Ανεβάστε μια εικόνα στο Docker

Ας ανεβάσουμε την εικόνα που μόλις δημιουργήσαμε στο Docker ώστε να είναι διαθέσιμη από το cloud. Συνδεθείτε με το Docker ID και τον κωδικό πρόσβασής σας:

Συνδεθείτε στο docker -u mydockerid -p mypassword

χρήση ώθηση λιμενεργατώνγια να ανεβάσουμε την εικόνα που δημιουργήσαμε στα προηγούμενα βήματα αντικαθιστώντας mydockeridμε το όνομα του Docker ID σας:

Docker push mydockerid /windows-test-images

Πώς να συσκευάσετε μια εφαρμογή σε ένα κοντέινερ Docker;

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

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

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

Ας υποθέσουμε ότι έχετε μια εφαρμογή NodeJS που θέλετε να συσκευάσετε σε ένα κοντέινερ. Ας υποθέσουμε ότι το αρχείο που εκτελεί την εφαρμογή σας ονομάζεται server.js και η εφαρμογή ακούει στη θύρα 8000 για να εκτελεστεί. Θα χρησιμοποιήσουμε το "node:carbon" ως πρότυπο. Για να αποθηκεύσετε την εφαρμογή σε κοντέινερ, πρέπει να δημιουργήσετε ένα "Dockerfile" στον κατάλογο όπου βρίσκονται τα αρχεία της εφαρμογής σας, το οποίο θα περιγράφει τις παραμέτρους για την προετοιμασία της εικόνας:

$ αγγίξτε Dockerfile

Τα περιεχόμενα του αρχείου μπορεί να είναι κάπως έτσι:

# Καθορίστε το πρότυπο για χρήση FROM node:carbon # Δημιουργία καταλόγου εργασίας εφαρμογής μέσα στο κοντέινερ WORKDIR /usr/src/app # Εγκατάσταση εξαρτήσεων εφαρμογής με npm # Αντιγράψτε και τα δύο package.json ΚΑΙ πακέτο-lock.json εάν υπάρχει πακέτο COPY*. json ./ RUN npm install # Αντιγράψτε τα αρχεία της εφαρμογής σας στην εικόνα COPY . . # Ανοίξτε τη θύρα 8000 ώστε να είναι προσβάσιμη έξω από το κοντέινερ EXPOSE 8000 # Εκτελέστε την εντολή για να εκτελέσετε την εφαρμογή μέσα στο κοντέινερ CMD [ "npm", "start" ]

Για να εξαιρέσετε τα περιττά αρχεία από την εικόνα, μπορείτε να καταχωρήσετε τα ονόματά τους στο αρχείο ".dockerignore". Μπορείτε να χρησιμοποιήσετε μια μάσκα (*.log).

Η εικόνα δημιουργείται με την ακόλουθη εντολή:

$ docker build -t όνομα χρήστη/node-web-app .

$ docker images # Παράδειγμα REPOSITORY TAG ID CREATED node carbon 1934b0b038d1 πριν από 5 ημέρες όνομα χρήστη/node-web-app τελευταία d64d3505b0d2 πριν από 1 λεπτό

Η εκκίνηση ενός κοντέινερ από μια εικόνα γίνεται με την ακόλουθη εντολή:

$ docker run -p 49160:8000 -d όνομα χρήστη/node-web-app

Αυτό το παράδειγμα δημιουργεί ένα κοντέινερ από την εικόνα "username/node-web-app" και ξεκινά αμέσως. Η θύρα εφαρμογής 8000 είναι διαθέσιμη στο τοπικό μηχάνημα (localhost) και για να είναι διαθέσιμη "εκτός", "προωθείται" στη θύρα 49160. Μπορείτε να επιλέξετε οποιαδήποτε ελεύθερη θύρα, επιπλέον, είναι δυνατή η προώθηση της εφαρμογής port "ως έχει" ορίζοντας την επιλογή " -p 8000:8000".

Μπορείτε να δείτε ότι το κοντέινερ σας εκτελείται εκδίδοντας την εντολή:

$ docker ps # Παράδειγμα ID IMAGE COMMAND ... ΘΥΡΕΣ ecce33b30ebf όνομα χρήστη/node-web-app:last npm start ... 49160->8000

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

$ docker pause ecce33b30ebf - παύση του κοντέινερ με αναγνωριστικό ecce33b30ebf
$ docker βιογραφικό ecce33b30ebf - αναγνωριστικό κοντέινερ βιογραφικού ecce33b30ebf
$ docker stop ecce33b30ebf - stop container με αναγνωριστικό ecce33b30ebf
$ docker rm ecce33b30ebf - αφαιρέστε το κοντέινερ (αυτό αφαιρεί όλα τα δεδομένα που δημιουργούνται από την εφαρμογή μέσα στο κοντέινερ)

Τον Μάρτιο του 2013, ο Soloman Hykes ανακοίνωσε την έναρξη ενός έργου ανοιχτού κώδικα που αργότερα έγινε γνωστό ως Docker. Υποστηρίχτηκε σθεναρά από την κοινότητα του Linux τους επόμενους μήνες και το φθινόπωρο του 2014, η Microsoft ανακοίνωσε σχέδια για εφαρμογή κοντέινερ στον Windows Server 2016. Το WinDocks, του οποίου συνίδρυσα, κυκλοφόρησε μια ανεξάρτητη έκδοση του ανοιχτή πηγή Docker για Windows στις αρχές του 2016 με έμφαση στην υποστήριξη κοντέινερ πρώτης κατηγορίας στον SQL Server. Τα εμπορευματοκιβώτια γίνονται γρήγορα το επίκεντρο της προσοχής στη βιομηχανία. Σε αυτό το άρθρο, θα ρίξουμε μια ματιά στα κοντέινερ και τη χρήση τους από προγραμματιστές SQL Server και DBA.

Αρχές οργάνωσης εμπορευματοκιβωτίων

Τα δοχεία ορίζουν νέα μέθοδοςσυσκευασία εφαρμογών, σε συνδυασμό με απομόνωση χρήστη και διαδικασίας, για εφαρμογές πολλαπλών μισθωτών. Διάφορες υλοποιήσεις κοντέινερ για Linux και Windows υπάρχουν εδώ και χρόνια, αλλά με την κυκλοφορία του Windows Server 2016, έχουμε το de facto πρότυπο Docker. Σήμερα, το API κοντέινερ Docker και η μορφή υποστηρίζονται σε δημόσιες υπηρεσίες AWS, Azure, Google Cloud, σε όλες τις διανομές Linux και Windows. Το κομψό πλαίσιο του Docker έχει σημαντικά πλεονεκτήματα.

  • Φορητότητα. Τα κοντέινερ περιέχουν εξαρτήσεις λογισμικού εφαρμογών και εκτελούνται αμετάβλητα στον φορητό υπολογιστή προγραμματιστή, σε έναν κοινόχρηστο διακομιστή δοκιμής και σε οποιαδήποτε δημόσια υπηρεσία.
  • Οικοσύστημα εμπορευματοκιβωτίων. Το Docker API είναι το επίκεντρο της καινοτομίας του κλάδου με λύσεις για παρακολούθηση, καταγραφή, αποθήκευση δεδομένων, ενορχήστρωση συμπλεγμάτων και διαχείριση.
  • Συμβατότητα με δημόσιες υπηρεσίες. Τα κοντέινερ είναι σχεδιασμένα για αρχιτεκτονική μικροϋπηρεσιών, κλιμάκωση και μεταβατικό φόρτο εργασίας. Τα δοχεία έχουν σχεδιαστεί για να αφαιρούνται και να αντικαθίστανται κατά βούληση, αντί να επισκευάζονται ή να αναβαθμίζονται.
  • Ταχύτητα και οικονομία. Χρειάζονται μερικά δευτερόλεπτα για τη δημιουργία κοντέινερ. Παρέχεται αποτελεσματική πολυσυνδρομητική υποστήριξη. Για τους περισσότερους χρήστες, ο αριθμός των εικονικών μηχανών μειώνεται κατά τρεις έως πέντε φορές (Εικόνα 1).

SQL Server Containers

Ο SQL Server έχει υποστηρίξει την πολυμίσθωση επώνυμης παρουσίας για δέκα χρόνια, οπότε ποια είναι η αξία των κοντέινερ του SQL Server;

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

Με την ταχύτητα και την αυτοματοποίησή τους, τα SQL Server Containers είναι ιδανικά για ένα περιβάλλον ανάπτυξης παραγωγής και ποιοτικού ελέγχου. Κάθε μέλος της ομάδας εργάζεται με απομονωμένα κοντέινερ σε μια κοινόχρηστη εικονική μηχανή, με τρεις έως πέντε φορές μείωση του αριθμού των εικονικών μηχανών. Ως αποτέλεσμα, έχουμε σημαντική οικονομία στη συντήρηση των εικονικών μηχανών και στο κόστος των αδειών χρήσης της Microsoft. Τα κοντέινερ μπορούν εύκολα να ενσωματωθούν σε συστοιχίες Storage Area Network (SAN) χρησιμοποιώντας αντίγραφα αποθήκευσης και κλώνους βάσης δεδομένων (Εικόνα 2).

Μια συνημμένη βάση δεδομένων 1 TB εγκαθίσταται σε ένα κοντέινερ σε λιγότερο από ένα λεπτό. Αυτή είναι μια σημαντική βελτίωση σε σχέση με διακομιστές με αποκλειστικές επώνυμες παρουσίες ή παροχή εικονικών μηχανών για κάθε προγραμματιστή. Μια εταιρεία χρησιμοποιεί έναν οκταπύρηνο διακομιστή για να εξυπηρετήσει έως και 20 κοντέινερ SQL Server των 400 GB. Στο παρελθόν, κάθε VM χρειαζόταν πάνω από μία ώρα για την παροχή και οι παρουσίες κοντέινερ παρέχονται σε δύο λεπτά. Έτσι, κατέστη δυνατό να μειωθεί ο αριθμός των εικονικών μηχανών κατά 20 φορές, να μειωθεί ο αριθμός των πυρήνων επεξεργαστών κατά 5 φορές και να μειωθεί δραματικά το κόστος πληρωμής για άδειες χρήσης της Microsoft. Επιπλέον, αυξημένη ευελιξία και ανταπόκριση στις επιχειρήσεις.

Χρήση SQL Server Containers

Τα κοντέινερ ορίζονται χρησιμοποιώντας σενάρια Dockerfile, τα οποία παρέχουν συγκεκριμένα βήματα για την κατασκευή ενός κοντέινερ. Το Dockerfile που εμφανίζεται στην Εικόνα 1 καθορίζει τον SQL Server 2012 με βάσεις δεδομένων που αντιγράφονται στο κοντέινερ και μια δέσμη ενεργειών SQL Server για την κάλυψη επιλεγμένων πινάκων.

Κάθε κοντέινερ μπορεί να περιέχει δεκάδες βάσεις δεδομένων με βοηθητικά αρχεία και αρχεία καταγραφής. Οι βάσεις δεδομένων μπορούν να αντιγραφούν και να εκτελεστούν σε ένα κοντέινερ ή να προσαρτηθούν χρησιμοποιώντας την εντολή MOUNTDB.

Κάθε κοντέινερ περιέχει ένα ιδιωτικό σύστημα αρχείων που απομονώνεται από πόρους κεντρικού υπολογιστή. Στην Εικόνα 2, το κοντέινερ είναι κατασκευασμένο με χρήση MSSQL-2014 και venture.mdf. Δημιουργείται ένα μοναδικό ContainerID και θύρα κοντέινερ.


Εικόνα 2: SQL Server 2014 κοντέινερ και venture.mdf

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

Άλλες Εφαρμογές

Τα κοντέινερ είναι τα πιο κοινά μέσα οργάνωσης ενός περιβάλλοντος ανάπτυξης και διασφάλισης ποιότητας, αλλά εμφανίζονται και άλλες χρήσεις. Η δοκιμή ανάκτησης καταστροφών είναι μια απλή αλλά πολλά υποσχόμενη περίπτωση χρήσης. Άλλα περιλαμβάνουν τη δημιουργία κοντέινερ του εσωτερικού περιβάλλοντος του SQL Server για εφαρμογές παλαιού τύπου όπως το SAP ή το Microsoft Dynamics. Το backend με κοντέινερ χρησιμοποιείται για την παροχή ενός εργασιακού περιβάλλοντος για την υποστήριξη και τρέχουσα συντήρηση. Τα δοχεία αξιολόγησης χρησιμοποιούνται επίσης για την υποστήριξη περιβαλλόντων παραγωγής με μόνιμες αποθήκες δεδομένων. Σε ένα από τα παρακάτω άρθρα, θα μιλήσω αναλυτικά για τα επίμονα δεδομένα.

Το WinDocks έχει δεσμευτεί να κάνει τα κοντέινερ ακόμα πιο εύχρηστα μέσω μιας διεπαφής ιστού. Ένα άλλο έργο εστιάζει στη μετεγκατάσταση κοντέινερ SQL Server σε DevOps ή Συνεχή ενσωμάτωση με αγωγούς CI/CD που βασίζονται στο Jenkins ή στο Team City. Σήμερα μπορείτε να εξοικειωθείτε με τη χρήση δοχείων σε όλα εκδόσεις των Windows 8 και Windows 10, Windows Server 2012 ή Windows Server 2016 με υποστήριξη για όλες τις εκδόσεις που ξεκινούν με τον SQL Server 2008 χρησιμοποιώντας το αντίγραφο του WinDocks Community Edition (https://www.windocks.com/community-docker-windows).

Εξερεύνηση τεχνολογίας κοντέινερ
Windows Server 2016

Ένα από τα αξιοσημείωτα νέα χαρακτηριστικά που εισήχθησαν στον Windows Server 2016 είναι η υποστήριξη για κοντέινερ. Ας τη γνωρίσουμε καλύτερα

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

Δοχεία στα Windows

Στον Windows Server 2016, εκτός από τις υπάρχουσες τεχνολογίες εικονικοποίησης - εικονικές εφαρμογές Hyper-V και Server App-V, έχει προστεθεί υποστήριξη για κοντέινερ Windows Server Containers, που υλοποιείται μέσω του επιπέδου αφαίρεσης στοίβας Διαχείριση κοντέινερ που υλοποιεί όλες τις απαραίτητες λειτουργίες. Η τεχνολογία ανακοινώθηκε ξανά στην Τεχνική Προεπισκόπηση 4, αλλά από τότε έχουν αλλάξει πολλά προς την απλοποίηση και οι οδηγίες που γράφτηκαν νωρίτερα δεν μπορούν καν να διαβαστούν. Ταυτόχρονα, προτάθηκαν δύο τύποι "δικών" κοντέινερ - κοντέινερ Windows και κοντέινερ Hyper-V. Και πιθανώς μια άλλη κύρια ευκαιρία είναι η χρήση των εργαλείων Docker εκτός από τα cmdlet PowerShell για τη διαχείριση κοντέινερ.

Τα κοντέινερ των Windows μοιάζουν κατ 'αρχήν με FreeBSD Jail ή Linux OpenVZ, χρησιμοποιούν έναν πυρήνα με το λειτουργικό σύστημα, ο οποίος, μαζί με άλλους πόρους (RAM, δίκτυο), μοιράζεται μεταξύ τους. Τα αρχεία και οι υπηρεσίες του λειτουργικού συστήματος αντιστοιχίζονται στον χώρο ονομάτων κάθε κοντέινερ. Αυτός ο τύπος κοντέινερ χρησιμοποιεί πόρους αποτελεσματικά, μειώνοντας τα γενικά έξοδα, και επομένως επιτρέπει στις εφαρμογές να τοποθετούνται πιο πυκνά. Δεδομένου ότι οι βασικές εικόνες του κοντέινερ "έχουν" έναν πυρήνα με έναν κόμβο, οι εκδόσεις τους πρέπει να ταιριάζουν, διαφορετικά η λειτουργία δεν είναι εγγυημένη.

Τα δοχεία Hyper-V χρησιμοποιούν ένα πρόσθετο στρώμα απομόνωσης και σε κάθε κοντέινερ εκχωρείται ο δικός του πυρήνας και μνήμη. Η απομόνωση, σε αντίθεση με τον προηγούμενο τύπο, δεν εκτελείται από τον πυρήνα του λειτουργικού συστήματος, αλλά από τον υπερεπόπτη Hyper-V (απαιτείται ο ρόλος Hyper-V). Το αποτέλεσμα είναι μικρότερο κόστος από τις εικονικές μηχανές, αλλά μεγαλύτερη απομόνωση από τα κοντέινερ των Windows. Σε αυτήν την περίπτωση, για να εκτελέσετε το κοντέινερ, έχετε τον ίδιο πυρήνα λειτουργικού συστήματος. Αυτά τα κοντέινερ μπορούν επίσης να αναπτυχθούν σε Windows 10 Pro/Enterprise. Αξίζει ιδιαίτερα να σημειωθεί ότι ο τύπος κοντέινερ δεν επιλέγεται τη στιγμή της δημιουργίας, αλλά την ώρα της ανάπτυξης. Δηλαδή, οποιοδήποτε κοντέινερ μπορεί να εκτελεστεί τόσο ως Windows όσο και ως παραλλαγή Hyper-V.

Ως λειτουργικό σύστημα στο κοντέινερ, χρησιμοποιείται ο κομμένος πυρήνας διακομιστή ή ο διακομιστής νανο. Το πρώτο εμφανίστηκε στον Windows Sever 2008 και παρέχει μεγαλύτερη συμβατότητα με υπάρχουσες εφαρμογές. Ο δεύτερος είναι ακόμη πιο απογυμνωμένος από τον Server Core και έχει σχεδιαστεί για να λειτουργεί χωρίς οθόνη, επιτρέποντάς σας να εκτελείτε τον διακομιστή με τη μικρότερη δυνατή διαμόρφωση για χρήση με Hyper-V, διακομιστή αρχείων (SOFS) και υπηρεσίες cloud, που απαιτούν 93% λιγότερο χώρος. Περιέχει μόνο τα περισσότερα απαραίτητα εξαρτήματα(.Net με CoreCLR, Hyper-V, Clustering κ.λπ.).

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