Ποια είναι τα καλύτερα εργαλεία Docker; Μια επισκόπηση
Το ολοκληρωμένο οικοσύστημα του Docker προσφέρει στους προγραμματιστές μια σειρά από δυνατότητες για την ανάπτυξη εφαρμογών, τη διαχείριση κοντέινερ και πολλά άλλα. Θα εξετάσουμε τα πιο σημαντικά εργαλεία του Docker και θα σας παρουσιάσουμε μια επισκόπηση των πιο δημοφιλών έργων τρίτων που αναπτύσσουν εργαλεία Docker ανοιχτού κώδικα.
Ποια είναι τα βασικά εργαλεία/στοιχεία του Docker;
Σήμερα, το Docker είναι πολύ περισσότερο από μια απλή εξελιγμένη πλατφόρμα διαχείρισης κοντέινερ λογισμικού. Οι προγραμματιστές έχουν δημιουργήσει μια σειρά από ποικίλα εργαλεία Docker, με σκοπό να καταστήσουν την ανάπτυξη εφαρμογών μέσω κατανεμημένων υποδομών και περιβάλλοντων cloud ευκολότερη, ταχύτερη και πιο ευέλικτη. Εκτός από τα εργαλεία για τη δημιουργία συμπλεγμάτων και την ενορχήστρωση, υπάρχει επίσης μια κεντρική αγορά εφαρμογών και ένα εργαλείο για τη διαχείριση των πόρων του cloud.
Μηχανή Docker
Όταν οι προγραμματιστές αναφέρονται στο «Docker», συνήθως εννοούν την εφαρμογήανοιχτού κώδικα τύπου πελάτη-διακομιστή πουαποτελεί τη βάση της πλατφόρμας κοντέινερ. Η εφαρμογή αυτή ονομάζεται Docker Engine. Βασικά στοιχεία του Docker Engine είναι το δαίμονας Docker, ένα REST API και μια CLI (διεπαφή γραμμής εντολών) που λειτουργεί ως διεπαφή χρήστη.
Με αυτή τη σχεδίαση, μπορείτε να επικοινωνείτε με το Docker Engine μέσω εντολών γραμμής εντολών και να διαχειρίζεστε εύκολα εικόνες Docker, αρχεία Docker και κοντέινερ Docker από το τερματικό.

Μπορείτε να βρείτε μια αναλυτική περιγραφή του Docker Engine στο σεμινάριό μας για αρχάριους με τίτλο «Σεμινάριο Docker: εγκατάσταση και πρώτα βήματα».
Docker Hub
Το Docker Hub παρέχει στους χρήστες ένα μητρώο βασισμένο στο cloud, το οποίο επιτρέπει τη λήψη εικόνων Docker, την κεντρική διαχείρισή τους και την κοινή χρήση τους με άλλους χρήστες του Docker. Οι εγγεγραμμένοι χρήστες μπορούν να αποθηκεύουν εικόνες Docker σε δημόσια ή ιδιωτικά αποθετήρια. Για τη λήψη μιας δημόσιας εικόνας ( διαδικασία που στην ορολογία του Docker ονομάζεται «pulling» ) δεν απαιτείται λογαριασμός χρήστη. Ένας ενσωματωμένος μηχανισμός ετικετών επιτρέπει τη διαχείριση των εκδόσεων των εικόνων.
Εκτός από τα δημόσια αποθετήρια άλλων χρηστών του Docker, υπάρχουν επίσης πολλοί πόροι από την ομάδα προγραμματιστών του Docker και γνωστά έργα ανοιχτού κώδικα, τα οποία μπορείτε να βρείτε στα επίσημα αποθετήρια του Docker Hub. Μεταξύ των πιο δημοφιλών εικόνων Docker συγκαταλέγονται ο διακομιστής ιστού NGINX, η βάση δεδομένων μνήμης Redis, το σύνολο εργαλείων Unix BusyBox και η διανομή Ubuntu Linux.

Οι οργανισμοί αποτελούν μια άλλη σημαντική λειτουργία του Docker Hub, η οποία επιτρέπει στους χρήστες του Docker να δημιουργούν ιδιωτικά αποθετήρια που είναι διαθέσιμα αποκλειστικά σε μια επιλεγμένη ομάδα ατόμων. Τα δικαιώματα πρόσβασης διαχειρίζονται εντός ενός οργανισμού μέσω ομάδων και συμμετοχών σε ομάδες.
Docker Swarm
Ο Docker Engine διαθέτει μια ενσωματωμένη λειτουργία που επιτρέπει στους χρήστες του να διαχειρίζονται τους κεντρικούς υπολογιστές Docker σε συστάδες που ονομάζονται swarms. Οι δυνατότητες διαχείρισης και συντονισμού συστάδων που είναι ενσωματωμένες στον Docker Engine βασίζονται στο εργαλείο Swarmkit. Εάν χρησιμοποιείτε παλαιότερη έκδοση της πλατφόρμας κοντέινερ, το εργαλείο Docker διατίθεται ως αυτόνομη εφαρμογή.
Ως εγγενές εργαλείο ομαδοποίησης του Docker, το Swarm συγκεντρώνει μια ομάδα κεντρικών υπολογιστών Docker σε έναν ενιαίο εικονικό κεντρικό υπολογιστή και παρέχει το REST API του Docker. Οποιοδήποτε εργαλείο Docker που συνδέεται με το δαίμονα του Docker μπορεί να έχει πρόσβαση στο Swarm και να επεκτείνεται σε οποιονδήποτε αριθμό κεντρικών υπολογιστών Docker. Με τη γραμμή εντολών του Docker Engine, οι χρήστες μπορούν να δημιουργούν swarms, να κατανέμουν εφαρμογές στο σύμπλεγμα και να διαχειρίζονται τη λειτουργία του swarm χωρίς να χρειάζεται να χρησιμοποιούν επιπλέον λογισμικό συντονισμού.
Οι μηχανές Docker που έχουν ομαδοποιηθεί σε συμπλέγματα λειτουργούν σε λειτουργία swarm. Επιλέξτε αυτήν την επιλογή αν θέλετε να δημιουργήσετε ένα νέο σύμπλεγμα ή να προσθέσετε έναν κεντρικό υπολογιστή Docker σε ένα υπάρχον swarm. Οι μεμονωμένοι κεντρικοί υπολογιστές Docker σε ένα σύμπλεγμα αναφέρονται ως «κόμβοι». Οι κόμβοι ενός συμπλέγματος μπορούν να λειτουργούν ως εικονικοί κεντρικοί υπολογιστές στο ίδιο τοπικό σύστημα, αλλά πιο συχνά χρησιμοποιείται μια αρχιτεκτονική βασισμένη στο cloud, όπου οι μεμονωμένοι κόμβοι του Docker swarm κατανέμονται σε διαφορετικά συστήματα και υποδομές.
Το λογισμικό βασίζεται σε αρχιτεκτονική τύπου «master-worker». Όταν πρέπει να κατανεμηθούν εργασίες στο Swarm, οι χρήστες διαβιβάζουν μια υπηρεσία στον κόμβο διαχειριστή. Ο διαχειριστής είναι στη συνέχεια υπεύθυνος για τον προγραμματισμό των κοντέινερ στο σύμπλεγμα και λειτουργεί ως κύρια διεπαφή χρήστη για την πρόσβαση στους πόρους του Swarm.
Ο κόμβος διαχειριστή αποστέλλει μεμονωμένες ενότητες, γνωστές ως εργασίες, στους κόμβους εργασίας.
- Υπηρεσίες: οι υπηρεσίες αποτελούν κεντρικές δομές στα clusters του Docker. Μια υπηρεσία ορίζει μια εργασία που πρέπει να εκτελεστεί σε ένα cluster του Docker. Μια υπηρεσία αφορά μια ομάδα κοντέινερ που βασίζονται στην ίδια εικόνα. Κατά τη δημιουργία μιας υπηρεσίας, ο χρήστης καθορίζει ποια εικόνα και ποιες εντολές θα χρησιμοποιηθούν. Επιπλέον, οι υπηρεσίες προσφέρουν τη δυνατότητα κλιμάκωσης των εφαρμογών. Οι χρήστες της πλατφόρμας Docker καθορίζουν απλώς πόσα κοντέινερ πρέπει να ξεκινήσουν για μια υπηρεσία.
- Εργασίες: για τη διανομή των υπηρεσιών στο σύμπλεγμα, αυτές χωρίζονται σε μεμονωμένες μονάδες εργασίας (εργασίες) από τον κόμβο διαχείρισης. Κάθε εργασία περιλαμβάνει ένα κοντέινερ Docker καθώς και τις εντολές που εκτελούνται σε αυτό.
Εκτός από τη διαχείριση του ελέγχου του συμπλέγματος και τον συντονισμό των κοντέινερ, οι κόμβοι διαχείρισης μπορούν εξ ορισμού να εκτελούν και λειτουργίες κόμβων εργασίας – εκτός αν περιορίσετε αυστηρά τις εργασίες αυτών των κόμβων στη διαχείριση.
Σε κάθε κόμβο-εργάτη εκτελείται ένα πρόγραμμα-πράκτορα. Αυτό δέχεται εργασίες και παρέχει στον αντίστοιχο κύριο κόμβο αναφορές κατάστασης σχετικά με την πρόοδο της εργασίας που έχει μεταφερθεί. Το παρακάτω γράφημα παρουσιάζει μια σχηματική αναπαράσταση ενός Docker Swarm:

Κατά την υλοποίηση ενός Docker Swarm, οι χρήστες συνήθως βασίζονται στον υπολογιστή Docker.
Docker Compose
Το Docker Compose επιτρέπει τη συγχώνευση πολλαπλών κοντέινερ και την εκτέλεσή τους με μία μόνο εντολή. Το βασικό στοιχείο του Compose είναι το κεντρικό αρχείο ελέγχου που βασίζεται στη βραβευμένη γλώσσα YAML. Η σύνταξη αυτού του αρχείου Compose είναι παρόμοια με εκείνη του λογισμικού ανοιχτού κώδικα Vagrant, το οποίο χρησιμοποιείται για τη δημιουργία και την προετοιμασία εικονικών μηχανών.
Στο αρχείο docker-compose.yml, μπορείτε να ορίσετε όσους κοντέινερ λογισμικού θέλετε, συμπεριλαμβανομένων όλων των εξαρτήσεων, καθώς και τις μεταξύ τους σχέσεις. Αυτές οι εφαρμογές πολλαπλών κοντέινερ ελέγχονται με τον ίδιο τρόπο όπως και τα μεμονωμένα κοντέινερ λογισμικού. Χρησιμοποιήστε την εντολήdocker-compose σε συνδυασμό με την επιθυμητή υποεντολή για να διαχειριστείτε ολόκληρο τον κύκλο ζωής της εφαρμογής.
Αυτό το εργαλείο Docker μπορεί να ενσωματωθεί εύκολα σε ένα σύμπλεγμα που βασίζεται στο Swarm. Με αυτόν τον τρόπο, μπορείτε να εκτελείτε εφαρμογές πολλαπλών κοντέινερ που έχουν δημιουργηθεί με το Compose σε κατανεμημένα συστήματα με την ίδια ευκολία που θα το κάνατε σε έναν μεμονωμένο κεντρικό υπολογιστή Docker.
Ένα άλλο χαρακτηριστικό του Docker Compose είναι ο ενσωματωμένος μηχανισμός κλιμάκωσης. Χρησιμοποιώντας αυτό το εργαλείο συντονισμού, μπορείτε εύκολα να ορίσετε μέσω της γραμμής εντολών τον αριθμό των κοντέινερ που θέλετε να εκκινήσετε για μια συγκεκριμένη υπηρεσία.
Ποια εργαλεία Docker τρίτων κατασκευαστών υπάρχουν;
Εκτός από την εσωτερική ανάπτυξη της Docker Inc., υπάρχουν διάφορα εργαλεία λογισμικού και πλατφόρμες από εξωτερικούς παρόχους που παρέχουν διεπαφές για το Docker Engine ή έχουν αναπτυχθεί ειδικά για τη δημοφιλή πλατφόρμα κοντέινερ. Στο οικοσύστημα της Docker, τα πιο δημοφιλή έργα ανοιχτού κώδικα περιλαμβάνουν το εργαλείο ενορχήστρωσης Kubernetes, το εργαλείο διαχείρισης συμπλεγμάτων Shipyard, τη λύση μεταφοράς πολλαπλών κοντέινερ Panamax, την πλατφόρμα συνεχούς ενσωμάτωσης Drone, το λειτουργικό σύστημα βασισμένο στο cloud OpenStack και το λειτουργικό σύστημα κέντρων δεδομένων D2iQ DC/OS, το οποίο βασίζεται στον διαχειριστή συμπλεγμάτων Mesos.
Kubernetes
Δεν είναι πάντα εφικτό για την Docker να αναπτύξει τα δικά της εργαλεία συντονισμού, όπως το Swarm και το Compose. Για τον λόγο αυτό, διάφορες εταιρείες επενδύουν εδώ και χρόνια στην ανάπτυξη εξειδικευμένων εργαλείων, τα οποία έχουν σχεδιαστεί για να διευκολύνουν τη λειτουργία της πλατφόρμας κοντέινερ σε μεγάλες, κατανεμημένες υποδομές. Μεταξύ των πιο δημοφιλών λύσεων αυτού του είδους συγκαταλέγεται το έργο ανοιχτού κώδικα Kubernetes.
Το Kubernetes είναι ένας διαχειριστής συμπλεγμάτων για εφαρμογές που βασίζονται σε κοντέινερ. Στόχος του Kubernetes είναι η αυτοματοποίηση των εφαρμογών σε ένα σύμπλεγμα. Για να επιτευχθεί αυτό, το εργαλείο συντονισμού χρησιμοποιεί ένα REST-API, ένα πρόγραμμα γραμμής εντολών και μια γραφική διεπαφή ιστού ως διεπαφές ελέγχου. Μέσω αυτών των διεπαφών, μπορούν να ενεργοποιηθούν αυτοματισμοί και να ζητηθούν αναφορές κατάστασης. Μπορείτε να χρησιμοποιήσετε το Kubernetes για:
- εκτέλεση εφαρμογών βασισμένων σε κοντέινερ σε ένα σύμπλεγμα,
- εγκατάσταση και διαχείριση εφαρμογών σε κατανεμημένα συστήματα,
- να κλιμακώνουν εφαρμογές, και
- να αξιοποιούν το υλικό όσο το δυνατόν καλύτερα.
Για τον σκοπό αυτό, το Kubernetes ομαδοποιεί τα κοντέινερ σε λογικές ενότητες, οι οποίες ονομάζονται pods. Τα pods αποτελούν τις βασικές μονάδες του διαχειριστή του cluster, οι οποίες μπορούν να κατανεμηθούν στο cluster μέσω προγραμματισμού.
Όπως και το Swarm του Docker, έτσι και το Kubernetes βασίζεται σε αρχιτεκτονική master-worker. Ένα cluster αποτελείται από έναν Kubernetes master και διάφορους workers, οι οποίοι ονομάζονται επίσης κόμβοι Kubernetes (ή minions). Ο Kubernetes master λειτουργεί ως κεντρικό επίπεδο ελέγχου στο cluster και αποτελείται από τέσσερα βασικά στοιχεία, επιτρέποντας την άμεση επικοινωνία στο cluster και την κατανομή εργασιών. Ένας Kubernetes master αποτελείται από έναν διακομιστή API, τη μνήμη διαμόρφωσης etcd, έναν προγραμματιστή και έναν διαχειριστή ελεγκτών.
- Διακομιστής API: Όλες οι αυτοματοποιήσεις στο σύμπλεγμα Kubernetes ενεργοποιούνται μέσω REST-API μέσω ενός διακομιστή API. Αυτός λειτουργεί ως η κεντρική διεπαφή διαχείρισης στο σύμπλεγμα.
- etcd: μπορείτε να θεωρήσετε τη μνήμη διαμόρφωσης ανοιχτού κώδικα etcd ως τη μνήμη ενός συμπλέγματος Kubernetes. Το Key Value Store, το οποίο αναπτύχθηκε από την CoreOS ειδικά για κατανεμημένα συστήματα, αποθηκεύει δεδομένα διαμόρφωσης και τα καθιστά διαθέσιμα σε κάθε κόμβο του συμπλέγματος. Η τρέχουσα κατάσταση ενός συμπλέγματος μπορεί να διαχειριστεί ανά πάσα στιγμή μέσω του etcd.
- Scheduler: ο scheduler είναι υπεύθυνος για τη διανομή ομάδων κοντέινερ (pods) στο cluster. Προσδιορίζει τις απαιτήσεις πόρων ενός pod και στη συνέχεια τις αντιστοιχίζει με τους διαθέσιμους πόρους των επιμέρους κόμβων στο cluster.
- Διαχειριστής ελεγκτή: ο διαχειριστής ελεγκτή είναι μια υπηρεσία του κύριου διακομιστή Kubernetes και ελέγχει την ενορχήστρωση ρυθμίζοντας την κατάσταση του συμπλέγματος και εκτελώντας εργασίες ρουτίνας. Το κύριο καθήκον του διαχειριστή ελεγκτή είναι να διασφαλίζει ότι η κατάσταση του συμπλέγματος αντιστοιχεί στην καθορισμένη κατάσταση-στόχο.
Τα συστατικά στοιχεία του κεντρικού διακομιστή Kubernetes μπορούν να βρίσκονται στον ίδιο κεντρικό υπολογιστή ή να είναι κατανεμημένα σε διάφορους κεντρικούς υπολογιστές εντός ενός συμπλέγματος υψηλής διαθεσιμότητας.
Ενώ ο κεντρικός υπολογιστής του Kubernetes είναι υπεύθυνος για τον συντονισμό, τα pods που κατανέμονται στο σύμπλεγμα εκτελούνται σε κεντρικούς υπολογιστές, τους κόμβους του Kubernetes, οι οποίοι υπάγονται στον κεντρικό υπολογιστή. Για να γίνει αυτό, πρέπει να εκτελείται ένας μηχανισμός κοντέινερ σε κάθε κόμβο του Kubernetes. Αν και το Docker αποτελεί το de facto πρότυπο, το Kubernetes δεν υποχρεούται να χρησιμοποιεί έναν συγκεκριμένο μηχανισμό κοντέινερ.
Εκτός από τον μηχανισμό διαχείρισης κοντέινερ, οι κόμβοι του Kubernetes περιλαμβάνουν τα ακόλουθα στοιχεία:
- kubelet: Το kubelet είναι ένας πράκτορας που εκτελείται σε κάθε κόμβο του Kubernetes και χρησιμοποιείται για τον έλεγχο και τη διαχείριση του κόμβου. Ως κεντρικός κόμβος επικοινωνίας κάθε κόμβου, το kubelet συνδέεται με τον κεντρικό υπολογιστή (master) του Kubernetes και διασφαλίζει τη διαβίβαση και τη λήψη πληροφοριών από το επίπεδο ελέγχου.
- kube-proxy: επιπλέον, η υπηρεσία proxy kube-proxy εκτελείται σε κάθε κόμβο του Kubernetes. Αυτό διασφαλίζει ότι τα αιτήματα από το εξωτερικό προωθούνται στα αντίστοιχα containers και παρέχει υπηρεσίες στους χρήστες εφαρμογών που βασίζονται σε containers. Το kube-proxy προσφέρει επίσης βασική εξισορρόπηση φορτίου.
Το παρακάτω διάγραμμα παρουσιάζει μια σχηματική απεικόνιση της αρχιτεκτονικής με κεντρικό κόμβο στην οποία βασίζεται η πλατφόρμα συντονισμού Kubernetes:

Εκτός από το βασικό έργο Kubernetes, υπάρχουν επίσης πολλά εργαλεία και επεκτάσεις που επιτρέπουν την προσθήκη περισσότερων λειτουργιών στην πλατφόρμα συντονισμού. Τα πιο δημοφιλή είναι τα εργαλεία παρακολούθησης και διάγνωσης σφαλμάτων Prometheus, Weave Scope και sysdig, καθώς και ο διαχειριστής πακέτων Helm. Υπάρχουν επίσης προσθήκες για τα Apache Maven και Gradle, καθώς και ένα API Java, το οποίο σας επιτρέπει να ελέγχετε το Kubernetes εξ αποστάσεως.
Ναυπηγείο
Το Shipyard είναι μια λύση διαχείρισης που αναπτύχθηκε από την κοινότητα και βασίζεται στο Swarm, η οποία επιτρέπει στους χρήστες να διαχειρίζονται πόρους Docker, όπως κοντέινερ, εικόνες, κεντρικούς υπολογιστές και ιδιωτικά μητρώα, μέσω ενός γραφικού περιβάλλοντος χρήστη. Διατίθεται ως διαδικτυακή εφαρμογή μέσω του προγράμματος περιήγησης. Εκτός από τις λειτουργίες διαχείρισης συμπλέγματος στις οποίες μπορεί κανείς να έχει πρόσβαση μέσω μιας κεντρικής διαδικτυακής διεπαφής, το Shipyard προσφέρει επίσης έλεγχο ταυτότητας χρηστών και έλεγχο πρόσβασης βάσει ρόλων.
Το λογισμικό είναι 100% συμβατό με το απομακρυσμένο API του Docker και χρησιμοποιεί τη βάση δεδομένων NoSQL ανοιχτού κώδικα RethinkDB για την αποθήκευση δεδομένων σχετικά με λογαριασμούς χρηστών, διευθύνσεις και συμβάντα. Το λογισμικό βασίζεται στο εργαλείο διαχείρισης συμπλεγμάτων Citadel και αποτελείται από τρία βασικά στοιχεία: τον ελεγκτή, το API και το περιβάλλον εργασίας χρήστη.
- Ελεγκτής Shipyard: ο ελεγκτής αποτελεί το βασικό στοιχείο του εργαλείου διαχείρισης Shipyard. Ο ελεγκτής Shipyard αλληλεπιδρά με το RethinkDB για την αποθήκευση δεδομένων και επιτρέπει την προσπέλαση μεμονωμένων κεντρικών υπολογιστών σε ένα σύμπλεγμα Docker, καθώς και τον έλεγχο συμβάντων.
- API Shipyard: το API Shipyard βασίζεται στο REST. Όλες οι λειτουργίες του εργαλείου διαχείρισης ελέγχονται μέσω του API Shipyard.
- Διεπαφή χρήστη (UI) Shipyard: η διεπαφή χρήστη Shipyard είναι μια εφαρμογή AngularJS, η οποία παρέχει στους χρήστες μια γραφική διεπαφή χρήστη για τη διαχείριση συστάδων Docker στον περιηγητή ιστού. Όλες οι αλληλεπιδράσεις στη διεπαφή χρήστη πραγματοποιούνται μέσω του API Shipyard.
Περισσότερες πληροφορίες σχετικά με το έργο ανοιχτού κώδικα μπορείτε να βρείτε στην επίσημη ιστοσελίδα του Shipyard.
Panamax
Οι προγραμματιστές του έργου λογισμικού ανοιχτού κώδικα Panamax έχουν ως στόχο να απλοποιήσουν την ανάπτυξη εφαρμογών που βασίζονται σε πολλαπλά κοντέινερ. Το δωρεάν αυτό εργαλείο προσφέρει στους χρήστες ένα γραφικό περιβάλλον εργασίας που επιτρέπει την εύκολη ανάπτυξη, εγκατάσταση και διανομή σύνθετων εφαρμογών που βασίζονται σε κοντέινερ Docker, μέσω της λειτουργίας «drag-and-drop».
Το Panamax επιτρέπει την αποθήκευση σύνθετων εφαρμογών πολλαπλών κοντέινερ ως προτύπων εφαρμογών και τη διανομή τους σε αρχιτεκτονικές συμπλέγματος με ένα μόνο κλικ. Χρησιμοποιώντας ένα ενσωματωμένο κατάστημα εφαρμογών που φιλοξενείται στο GitHub, τα πρότυπα για εφαρμογές που έχουν δημιουργηθεί από τους ίδιους τους χρήστες μπορούν να αποθηκευτούν σε αποθετήρια Git και να διατεθούν σε άλλους χρήστες.
Τα βασικά στοιχεία της αρχιτεκτονικής Panamax μπορούν να χωριστούν σε δύο ομάδες: τον τοπικό πελάτη Panamax και έναν οποιονδήποτε αριθμό απομακρυσμένων προορισμών ανάπτυξης.
Ο τοπικός πελάτης Panamax αποτελεί το βασικό στοιχείο αυτού του εργαλείου Docker. Εκτελείται στο τοπικό σύστημα και επιτρέπει τη δημιουργία σύνθετων εφαρμογών που βασίζονται σε κοντέινερ. Ο τοπικός πελάτης αποτελείται από τα ακόλουθα στοιχεία:
- CoreOS: η εγκατάσταση του τοπικού πελάτη Panamax απαιτεί τη διανομή Linux CoreOS ως σύστημα υποδοχής, η οποία έχει σχεδιαστεί ειδικά για κοντέινερ λογισμικού. Ο πελάτης Panamax εκτελείται στη συνέχεια ως κοντέινερ Docker στο CoreOS. Εκτός από τις δυνατότητες του Docker, οι χρήστες έχουν πρόσβαση σε διάφορες λειτουργίες του CoreOS. Αυτές περιλαμβάνουν, μεταξύ άλλων, τα Fleet και Journalctl:
- Fleet: αντί να ενσωματώνεται απευθείας με το Docker, ο πελάτης Panamax χρησιμοποιεί τον διαχειριστή συμπλέγματος Fleet για να συντονίζει τα κοντέινερ του. Το Fleet είναι ένας διαχειριστής συμπλέγματος που ελέγχει το δαίμονα Linux systemd σε συμπλέγματα υπολογιστών.
- Journalctl: ο πελάτης Panamax χρησιμοποιεί το Journalctl για να ζητήσει μηνύματα καταγραφής από τον διαχειριστή συστήματος Linux systemd από το ημερολόγιο.
- Εγκαταστάτης τοπικού πελάτη: ο εγκαταστάτης τοπικού πελάτη περιέχει όλα τα στοιχεία που απαιτούνται για την εγκατάσταση του πελάτη Panamax σε ένα τοπικό σύστημα.
- Τοπικός πράκτορας Panamax: το κεντρικό στοιχείο του τοπικού πελάτη είναι ο τοπικός πράκτορας. Αυτός συνδέεται με διάφορα άλλα στοιχεία και εξαρτήσεις μέσω του API Panamax. Αυτά περιλαμβάνουν τον τοπικό κεντρικό υπολογιστή Docker, το περιβάλλον εργασίας χρήστη Panamax, εξωτερικά μητρώα και τους απομακρυσμένους πράκτορες των στόχων ανάπτυξης στο σύμπλεγμα. Ο τοπικός πράκτορας αλληλεπιδρά με τις ακόλουθες διεπαφές προγραμμάτων στο τοπικό σύστημα μέσω του API Panamax για την ανταλλαγή πληροφοριών σχετικά με τις εφαρμογές που εκτελούνται:
- Απομακρυσμένο API Docker: Το Panamax αναζητά εικόνες στο τοπικό σύστημα μέσω του απομακρυσμένου API Docker και λαμβάνει πληροφορίες σχετικά με τα κοντέινερ που εκτελούνται.
- API etcd: τα αρχεία μεταδίδονται στο δαίμονα CoreOS Fleet μέσω του API etcd.
- systemd-journal-gatewayd.services: Το Panamax λαμβάνει την έξοδο του ημερολογίου των υπηρεσιών που εκτελούνται μέσω του systemd-journal-gatewayd.services.
Επιπλέον, το API Panamax επιτρέπει επίσης την αλληλεπίδραση με διάφορα εξωτερικά API.
- API μητρώου Docker: Το Panamax λαμβάνει ετικέτες εικόνων από το μητρώο Docker μέσω του API του μητρώου Docker.
- API GitHub: Το Panamax φορτώνει πρότυπα από το αποθετήριο GitHub χρησιμοποιώντας το API GitHub.
- API KissMetrics: το API KissMetrics συλλέγει δεδομένα σχετικά με τα πρότυπα που εκτελούν οι χρήστες.
- Περιβάλλον εργασίας χρήστη Panamax: το περιβάλλον εργασίας χρήστη Panamax λειτουργεί ως διεπαφή χρήστη στο τοπικό σύστημα και επιτρέπει στους χρήστες να ελέγχουν το εργαλείο Docker μέσω μιας γραφικής διεπαφής. Οι εισόδους του χρήστη προωθούνται απευθείας στον τοπικό πράκτορα μέσω του API Panamax. Το περιβάλλον εργασίας χρήστη Panamax βασίζεται στο CTL Base UI Kit, μια βιβλιοθήκη στοιχείων διεπαφής χρήστη για διαδικτυακά έργα από την CenturyLink.
Στην ορολογία του Panamax, κάθε κόμβος σε ένα σύμπλεγμα Docker που δεν εκτελεί καθήκοντα διαχείρισης αναφέρεται ως απομακρυσμένος προορισμός ανάπτυξης. Οι προορισμοί ανάπτυξης αποτελούνται από έναν κεντρικό υπολογιστή Docker, ο οποίος έχει ρυθμιστεί ώστε να αναπτύσσει πρότυπα Panamax με τη βοήθεια των ακόλουθων στοιχείων:
- Πρόγραμμα εγκατάστασης προορισμού ανάπτυξης: το πρόγραμμα εγκατάστασης προορισμού ανάπτυξης εκκινεί έναν κεντρικό υπολογιστή Docker, εξοπλισμένο με έναν απομακρυσμένο πράκτορα Panamax και έναν προσαρμογέα ενορχήστρωσης.
- Απομακρυσμένος πράκτορας Panamax: εάν είναι εγκατεστημένος ένας απομακρυσμένος πράκτορας Panamax, οι εφαρμογές μπορούν να διανεμηθούν μέσω του τοπικού πελάτη Panamax σε οποιοδήποτε επιθυμητό τελικό σημείο στο σύμπλεγμα. Ο απομακρυσμένος πράκτορας Panamax εκτελείται ως κοντέινερ Docker σε κάθε στόχο ανάπτυξης στο σύμπλεγμα.
- Προσαρμογέας ενορχήστρωσης Panamax: στον προσαρμογέα ενορχήστρωσης, η λογική του προγράμματος παρέχεται για κάθε εργαλείο ενορχήστρωσης που είναι διαθέσιμο για το Panamax σε ένα ανεξάρτητο επίπεδο προσαρμογέα. Εξαιτίας αυτού, οι χρήστες έχουν τη δυνατότητα να επιλέγουν πάντα την ακριβή τεχνολογία ενορχήστρωσης που θα υποστηρίζεται από το περιβάλλον-στόχο τους. Οι προδιαμορφωμένοι προσαρμογείς περιλαμβάνουν τα Kubernetes και Fleet:
- Προσαρμογέας Panamax Kubernetes: σε συνδυασμό με τον απομακρυσμένο πράκτορα Panamax, ο προσαρμογέας Panamax Kubernetes επιτρέπει τη διανομή προτύπων Panamax σε συμπλέγματα Kubernetes.
- Προσαρμογέας Panamax Fleet: σε συνδυασμό με τον απομακρυσμένο πράκτορα Panamax, ο προσαρμογέας Panamax Fleet επιτρέπει τη διανομή προτύπων Panamax σε clusters που ελέγχονται με τη βοήθεια του διαχειριστή clusters Fleet.
Το παρακάτω διάγραμμα απεικονίζει την αλληλεπίδραση μεταξύ των επιμέρους στοιχείων του Panamax σε ένα σύμπλεγμα Docker:

Το εργαλείο διαχείρισης κοντέινερ Panamax, που βασίζεται στο CoreOS, παρέχει στους χρήστες μια ποικιλία τυποποιημένων τεχνολογιών συντονισμού κοντέινερ μέσω ενός γραφικού περιβάλλοντος χρήστη, καθώς και τη δυνατότητα να διαχειρίζονται εύκολα σύνθετες εφαρμογές πολλαπλών κοντέινερ σε αρχιτεκτονικές συμπλέγματος χρησιμοποιώντας οποιοδήποτε σύστημα (π.χ. τον δικό σας φορητό υπολογιστή).
Μέσω του δημόσιου αποθετηρίου προτύπων του Panamax, οι χρήστες του Panamax έχουν πρόσβαση σε μια δημόσια βιβλιοθήκη προτύπων με διάφορους πόρους μέσω του GitHub.
Δρόνος
Το Drone είναι μια απλή πλατφόρμα συνεχούς ενσωμάτωσης με ελάχιστες απαιτήσεις. Με αυτό το εργαλείο Docker, μπορείτε να φορτώνετε αυτόματα την πιο πρόσφατη έκδοση του κώδικα σας από ένα αποθετήριο Git, όπως το GitHub, και να την δοκιμάζετε σε απομονωμένα κοντέινερ Docker. Μπορείτε να εκτελέσετε οποιαδήποτε σειρά δοκιμών και να στέλνετε αναφορές και μηνύματα κατάστασης μέσω email. Για κάθε δοκιμή λογισμικού, δημιουργείται ένα νέο κοντέινερ βασισμένο σε εικόνες από το δημόσιο μητρώο Docker. Αυτό σημαίνει ότι οποιαδήποτε δημόσια διαθέσιμη εικόνα Docker μπορεί να χρησιμοποιηθεί ως περιβάλλον για τη δοκιμή του κώδικα.
Το Drone είναι ενσωματωμένο στο Docker και υποστηρίζεται από διάφορες γλώσσες προγραμματισμού, όπως PHP, Node.js, Ruby, Go και Python. Η πλατφόρμα κοντέινερ αποτελεί τη μόνη πραγματική εξάρτηση. Μπορείτε να δημιουργήσετε τη δική σας προσωπική πλατφόρμα συνεχούς ενσωμάτωσης με το Drone σε οποιοδήποτε σύστημα στο οποίο μπορεί να εγκατασταθεί το Docker. Το Drone υποστηρίζει διάφορα αποθετήρια ελέγχου εκδόσεων, ενώ μπορείτε να βρείτε έναν οδηγό για την τυπική εγκατάσταση με ενσωμάτωση GitHub στον ιστότοπο του έργου ανοιχτού κώδικα, στη διεύθυνση readme.drone.io.
Η διαχείριση της πλατφόρμας συνεχούς ενσωμάτωσης πραγματοποιείται μέσω μιας διαδικτυακής διεπαφής. Εδώ μπορείτε να φορτώσετε εκδόσεις λογισμικού από οποιοδήποτε αποθετήριο Git, να τις ενσωματώσετε σε εφαρμογές και να εκτελέσετε το αποτέλεσμα σε ένα προκαθορισμένο περιβάλλον δοκιμών. Για να γίνει αυτό, ορίζεται ένα αρχείο .drone.yml που καθορίζει τον τρόπο δημιουργίας και εκτέλεσης της εφαρμογής για κάθε δοκιμή λογισμικού.
Στους χρήστες drone παρέχεται μια λύση συνεχούς ενσωμάτωσης (CI) ανοιχτού κώδικα, η οποία συνδυάζει τα πλεονεκτήματα εναλλακτικών προϊόντων όπως το Travis και το Jenkins σε μια φιλική προς τον χρήστη εφαρμογή.
OpenStack
Όσον αφορά τη δημιουργία και τη λειτουργία υποδομών cloud ανοιχτού κώδικα, το λειτουργικό σύστημα cloud ανοιχτού κώδικα OpenStack αποτελεί την ιδανική λύση λογισμικού.
Με το OpenStack μπορείτε να διαχειρίζεστε πόρους υπολογιστών, αποθήκευσης και δικτύου από έναν κεντρικό πίνακα ελέγχου και να τους διαθέτετε στους τελικούς χρήστες μέσω μιας διαδικτυακής διεπαφής.
Το λειτουργικό σύστημα cloud βασίζεται σε μια αρθρωτή αρχιτεκτονική που αποτελείται από πολλά στοιχεία:
- Zun (υπηρεσία κοντέινερ): Το Zun είναι η υπηρεσία κοντέινερ του OpenStack και επιτρέπει την εύκολη ανάπτυξη και διαχείριση εφαρμογών σε κοντέινερ στο cloud του OpenStack. Ο σκοπός του Zun είναι να επιτρέπει στους χρήστες να διαχειρίζονται κοντέινερ μέσω ενός REST API χωρίς να χρειάζεται να διαχειρίζονται διακομιστές ή συμπλέγματα. Για να λειτουργήσει το Zun, θα χρειαστείτε τρεις άλλες υπηρεσίες OpenStack, οι οποίες είναι το Keystone, το Neutron και το kryr-libnetwork. Η λειτουργικότητα του Zun μπορεί επίσης να επεκταθεί μέσω πρόσθετων υπηρεσιών OpenStack, όπως το Cinder και το Glance.
- Neutron (συστατικό δικτύου): Το Neutron (πρώην Quantum) είναι ένα φορητό, επεκτάσιμο συστατικό συστήματος που υποστηρίζεται από API και χρησιμοποιείται για τον έλεγχο του δικτύου. Το module παρέχει μια διεπαφή για σύνθετες τοπολογίες δικτύου και υποστηρίζει διάφορα plugins μέσω των οποίων μπορούν να ενσωματωθούν εκτεταμένες λειτουργίες δικτύου.
- kuryr-libnetwork (πρόγραμμα οδήγησης Docker): Το kuryr-libnetwork είναι ένα πρόγραμμα οδήγησης που λειτουργεί ως διεπαφή μεταξύ του Docker και του Neutron.
- Cinder (αποθήκευση μπλοκ): Το Cinder είναι το ψευδώνυμο ενός στοιχείου στην αρχιτεκτονική του OpenStack που παρέχει μόνιμη αποθήκευση μπλοκ για τη λειτουργία των VM. Το module παρέχει εικονική αποθήκευση μέσω ενός API αυτοεξυπηρέτησης. Μέσω αυτού, οι τελικοί χρήστες μπορούν να κάνουν χρήση των πόρων αποθήκευσης χωρίς να γνωρίζουν ποια συσκευή παρέχει την αποθήκευση.
- Keystone (υπηρεσία ταυτότητας): Το Keystone παρέχει στους χρήστες του OpenStack μια κεντρική υπηρεσία ταυτότητας. Το module λειτουργεί ως σύστημα ελέγχου ταυτότητας και δικαιωμάτων μεταξύ των επιμέρους στοιχείων του OpenStack. Η πρόσβαση σε έργα στο cloud ρυθμίζεται από τους ενοικιαστές. Κάθε ενοικιαστής αντιπροσωπεύει έναν χρήστη και μπορούν να οριστούν διάφορες προσβάσεις χρηστών με διαφορετικά δικαιώματα.
- Glance (υπηρεσία εικόνων): με τη μονάδα Glance, το OpenStack παρέχει μια υπηρεσία που επιτρέπει την αποθήκευση και ανάκτηση εικόνων εικονικών μηχανών.
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με τα στοιχεία και τις υπηρεσίες του OpenStack στο άρθρο μας για το OpenStack.
Εκτός από τα στοιχεία που αναφέρθηκαν παραπάνω, η αρχιτεκτονική του OpenStack μπορεί να επεκταθεί με τη χρήση διαφόρων ενοτήτων. Μπορείτε να βρείτε πληροφορίες για τις διάφορες προαιρετικές ενότητες στον ιστότοπο του OpenStack.
D2iQ DC/OS
Το DC/OS (Distributed Cloud Operating System) είναι ένα λογισμικό ανοιχτού κώδικα για τη λειτουργία κατανεμημένων συστημάτων που αναπτύχθηκε από την D2iQ Inc. (πρώην Mesosphere). Το έργο βασίζεται στον διαχειριστή συμπλεγμάτων ανοιχτού κώδικα Apache Mesos και αποτελεί ένα λειτουργικό σύστημα για κέντρα δεδομένων. Ο πηγαίος κώδικας διατίθεται στους χρήστες υπό την άδεια Apache έκδοση 2 στα αποθετήρια του DC/OS στο GitHub. Μια εταιρική έκδοση του λογισμικού είναι επίσης διαθέσιμη στο d2iq.com. Εκτενής τεκμηρίωση του έργου μπορεί να βρεθεί στο dcos.io.
Μπορείτε να θεωρήσετε το DC/OS ως μια διανομή του Mesos που σας παρέχει όλες τις δυνατότητες του διαχειριστή συμπλέγματος (μέσω μιας κεντρικής διεπαφής χρήστη) και επεκτείνει σημαντικά τις δυνατότητες του Mesos.
Το DC/OS χρησιμοποιεί τον πυρήνα του κατανεμημένου συστήματος της πλατφόρμας Mesos. Αυτό επιτρέπει τη συγκέντρωση των πόρων ενός ολόκληρου κέντρου δεδομένων και τη διαχείρισή τους ως ένα συγκεντρωτικό σύστημα, σαν να επρόκειτο για έναν ενιαίο λογικό διακομιστή. Με αυτόν τον τρόπο, μπορείτε να ελέγχετε ολόκληρα σύμπλεγματα φυσικών ή εικονικών μηχανών με την ίδια ευκολία που θα χειρίζεστε έναν μεμονωμένο υπολογιστή.
Το λογισμικό απλοποιεί την εγκατάσταση και τη διαχείριση κατανεμημένων εφαρμογών και αυτοματοποιεί εργασίες όπως η διαχείριση πόρων, ο προγραμματισμός και η επικοινωνία μεταξύ διεργασιών. Η διαχείριση ενός συμπλέγματος που βασίζεται στο D2iQ DC/OS, καθώς και των υπηρεσιών που περιλαμβάνει, πραγματοποιείται μέσω ενός κεντρικού προγράμματος γραμμής εντολών (CLI) ή μιας διεπαφής ιστού (GUI).
Το DC/OS απομονώνει τους πόρους του cluster και παρέχει κοινές υπηρεσίες, όπως την ανίχνευση υπηρεσιών ή τη διαχείριση πακέτων. Τα βασικά στοιχεία του λογισμικού εκτελούνται σε μια προστατευμένη περιοχή – τον πυρήνα(core kernel). Σε αυτά περιλαμβάνονται τα προγράμματα master και agent της πλατφόρμας Mesos, τα οποία είναι υπεύθυνα για την κατανομή πόρων, την απομόνωση διεργασιών και τις λειτουργίες ασφαλείας.
- Κεντρικός υπολογιστής Mesos: ο κεντρικός υπολογιστής Mesos είναι μια κεντρική διεργασία που εκτελείται σε έναν κόμβο κεντρικού υπολογιστή. Σκοπός του κεντρικού υπολογιστή Mesos είναι να ελέγχει τη διαχείριση των πόρων και να συντονίζει τις εργασίες (αφηρημένες μονάδες εργασίας) που εκτελούνται σε έναν κόμβο πράκτορα. Για να το επιτύχει αυτό, ο κεντρικός υπολογιστής Mesos κατανέμει πόρους σε καταχωρημένες υπηρεσίες DC/OS και λαμβάνει αναφορές πόρων από τους πράκτορες Mesos.
- Πράκτορες Mesos: Οι πράκτορες Mesos είναι διεργασίες που εκτελούνται σε λογαριασμούς πρακτόρων και είναι υπεύθυνοι για την εκτέλεση των εργασιών που διανέμονται από τον κύριο. Οι πράκτορες Mesos παρέχουν τακτικές αναφορές σχετικά με τους διαθέσιμους πόρους στο σύμπλεγμα στον κύριο Mesos. Αυτές προωθούνται από τον κύριο Mesos σε έναν προγραμματιστή (π.χ. Marathon, Chronos ή Cassandra). Αυτός αποφασίζει ποια εργασία θα εκτελεστεί σε ποιον κόμβο. Οι εργασίες εκτελούνται στη συνέχεια σε ένα κοντέινερ με απομονωμένο τρόπο.
Όλα τα υπόλοιπα στοιχεία του συστήματος, καθώς και οι εφαρμογές που εκτελούνται από τους πράκτορες Mesos μέσω του executor, εκτελούνται στον χώρο χρήστη. Τα βασικά στοιχεία μιας τυπικής εγκατάστασης DC/OS είναι ο δρομολογητής διαχείρισης (admin router), το Mesos DNS, ένας κατανεμημένος διακομιστής μεσολάβησης DNS, ο εξισορροπητής φορτίου Minuteman, ο προγραμματιστής Marathon, το Apache ZooKeeper και το Exhibitor.
- Διαχειριστικός δρομολογητής: ο διαχειριστικός δρομολογητής είναι ένας ειδικά διαμορφωμένος διακομιστής ιστού βασισμένος στο NGINX, ο οποίος παρέχει υπηρεσίες DC/OS, καθώς και λειτουργίες κεντρικής πιστοποίησης και διακομιστή μεσολάβησης.
- Mesos DNS: το στοιχείο συστήματος Mesos DNS παρέχει λειτουργίες ανίχνευσης υπηρεσιών που επιτρέπουν σε μεμονωμένες υπηρεσίες και εφαρμογές στο σύμπλεγμα να αναγνωρίζουν η μία την άλλη μέσω ενός κεντρικού συστήματος ονομάτων τομέα (DNS).
- Distributed DNS proxy: ο διανεμημένος διακομιστής μεσολάβησης DNS είναι ένας εσωτερικός διαχειριστής DNS.
- Minuteman: το στοιχείο συστήματος Minuteman λειτουργεί ως εσωτερικός εξισορροπητής φορτίου που λειτουργεί στο επίπεδο μεταφοράς (Layer 4) του μοντέλου αναφοράς OSI.
- DC/OS Marathon: Το Marathon είναι ένα κεντρικό στοιχείο της πλατφόρμας Mesos που λειτουργεί στο D2iQ DC/OS ως σύστημα εκκίνησης (παρόμοιο με το systemd). Το Marathon εκκινεί και εποπτεύει τις υπηρεσίες και τις εφαρμογές του DC/OS σε περιβάλλοντα συμπλέγματος. Επιπλέον, το λογισμικό παρέχει λειτουργίες υψηλής διαθεσιμότητας, ανίχνευση υπηρεσιών, εξισορρόπηση φορτίου, ελέγχους καλής λειτουργίας και μια γραφική διεπαφή ιστού.
- Apache ZooKeeper: Το Apache ZooKeeper είναι ένα στοιχείο λογισμικού ανοιχτού κώδικα που παρέχει λειτουργίες συντονισμού για τη λειτουργία και τον έλεγχο εφαρμογών σε κατανεμημένα συστήματα. Το ZooKeeper χρησιμοποιείται στο D2iQ DC/OS για τον συντονισμό όλων των εγκατεστημένων υπηρεσιών του συστήματος.
- Exhibitor: Το Exhibitor είναι ένα στοιχείο συστήματος που εγκαθίσταται και διαμορφώνεται αυτόματα με το ZooKeeper σε κάθε κύριο κόμβο. Το Exhibitor παρέχει επίσης μια γραφική διεπαφή χρήστη για τους χρήστες του ZooKeeper.
Διάφορα φορτία εργασίας μπορούν να εκτελούνται ταυτόχρονα σε πόρους του συμπλέγματος που συγκεντρώνονται μέσω του DC/OS. Αυτό, για παράδειγμα, επιτρέπει την παράλληλη λειτουργία στο λειτουργικό σύστημα του συμπλέγματος συστημάτων μεγάλων δεδομένων, μικρουπηρεσιών ή πλατφορμών κοντέινερ, όπως τα Hadoop, Spark και Docker.
Στο περιβάλλον D2iQ Universe, υπάρχει διαθέσιμος ένας δημόσιος κατάλογος εφαρμογών για το DC/OS. Χάρη σε αυτόν, μπορείτε να εγκαταστήσετε εφαρμογές όπως το Spark, το Cassandra, το Chronos, το Jenkins ή το Kafka με ένα απλό κλικ στο γραφικό περιβάλλον χρήστη.
Ποια εργαλεία του Docker υπάρχουν για την ασφάλεια;
Παρόλο που οι εγκλεισμένες διεργασίες που εκτελούνται σε κοντέινερ μοιράζονται τον ίδιο πυρήνα, το Docker χρησιμοποιεί διάφορες τεχνικές για να τις απομονώσει η μία από την άλλη. Για τον σκοπό αυτό χρησιμοποιούνται συνήθως βασικές λειτουργίες του πυρήνα Linux, όπως τα Cgroups και τα Namespaces.
Ωστόσο, τα containers εξακολουθούν να μην προσφέρουν τον ίδιο βαθμό απομόνωσης που επιτυγχάνεται με τις εικονικές μηχανές. Παρά τη χρήση τεχνικών απομόνωσης, σημαντικά βασικά υποσυστήματα, όπως τα Cgroups, καθώς και διεπαφές του πυρήνα στους καταλόγους /sys και /proc, είναι προσβάσιμα μέσω των containers.
Η ομάδα ανάπτυξης του Docker έχει αναγνωρίσει ότι αυτά τα ζητήματα ασφάλειας αποτελούν εμπόδιο για την καθιέρωση της τεχνολογίας των κοντέινερ σε συστήματα παραγωγής. Εκτός από τις βασικές τεχνικές απομόνωσης του πυρήνα Linux, οι νεότερες εκδόσεις του Docker Engine υποστηρίζουν επίσης τα πλαίσια AppArmor, SELinux και Seccomp, τα οποία λειτουργούν ως ένα είδος τείχους προστασίας για τους βασικούς πόρους.
- AppArmor: με το AppArmor, ρυθμίζονται τα δικαιώματα πρόσβασης των κοντέινερ στα συστήματα αρχείων.
- SELinux: Το SELinux παρέχει ένα σύνθετο σύστημα ρύθμισης όπου μπορεί να εφαρμοστεί έλεγχος πρόσβασης σε βασικούς πόρους.
- Seccomp: Το Seccomp (Secure Computing Mode) εποπτεύει την κλήση των συστημικών κλήσεων.
Εκτός από αυτά τα εργαλεία του Docker, το Docker αξιοποιεί επίσης τις δυνατότητες του Linux για να περιορίσει τα δικαιώματα root με τα οποία το Docker Engine εκκινεί τα κοντέινερ.
Υπάρχουν επίσης και άλλα ζητήματα ασφάλειας που αφορούν ευπάθειες λογισμικού σε στοιχεία εφαρμογών που διανέμονται μέσω του μητρώου Docker. Δεδομένου ότι ουσιαστικά ο καθένας μπορεί να δημιουργήσει εικόνες Docker και να τις καταστήσει δημόσια προσβάσιμες στην κοινότητα μέσω του Docker Hub, υπάρχει ο κίνδυνος εισαγωγής κακόβουλου κώδικα στο σύστημά σας κατά τη λήψη μιας εικόνας. Πριν από την ανάπτυξη μιας εφαρμογής, οι χρήστες του Docker θα πρέπει να βεβαιώνονται ότι ολόκληρος ο κώδικας που παρέχεται σε μια εικόνα για την εκτέλεση κοντέινερ προέρχεται από αξιόπιστη πηγή.
Το Docker προσφέρει ένα πρόγραμμα επαλήθευσης που μπορούν να χρησιμοποιήσουν οι πάροχοι λογισμικού για να ελέγχουν και να επαληθεύουν τις εικόνες Docker τους. Με αυτό το πρόγραμμα επαλήθευσης, το Docker στοχεύει να διευκολύνει τους προγραμματιστές στη δημιουργία αλυσίδων εφοδιασμού λογισμικού που είναι ασφαλείς για τα έργα τους. Εκτός από την ενίσχυση της ασφάλειας για τους χρήστες, το πρόγραμμα στοχεύει να προσφέρει στους προγραμματιστές λογισμικού έναν τρόπο να διαφοροποιήσουν τα έργα τους από το πλήθος των άλλων διαθέσιμων πόρων. Οι επαληθευμένες εικόνες φέρουν την ένδειξη «Verified Publisher» και, εκτός από άλλα οφέλη, κατατάσσονται υψηλότερα στα αποτελέσματα αναζήτησης του Docker Hub.