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

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

Πριν από το Docker, τα microservices αναπτύσσονταν χρησιμοποιώντας εικονικοποίηση. Αυτό σημαίνει ότι πολλαπλές εικονικές μηχανές έτρεχαν το installation τους σε ένα μόνο κεντρικό μηχάνημα. Αυτό σήμαινε πως χρησιμοποιούνταν μεμονωμένες εικονικές μηχανές για την εκτέλεση μεμονωμένων microservices. Το μειονέκτημα αυτής της προσέγγισης ήταν ότι σπαταλούσε πολλούς πόρους.

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

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

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

 

Γιατί είναι τόσο δημοφιλές;

1. Η αρχιτεκτονική των μικροϋπηρεσιών
Το Docker επιτρέπει να αναλύσετε την εφαρμογή σας σε microservices. Κάθε υπηρεσία είναι σαν ένας μικροϋπολογιστής. Το docker container έχει μια συγκεκριμένη λειτουργία και μπορεί να απομονωθεί από άλλες υπηρεσίες.

2. Συμβατότητα
Τα Docker containers, σε αντίθεση με τις εικονικές μηχανές, μπορούν να διανεμηθούν σε οποιαδήποτε πλατφόρμα χωρίς να προκληθούν προβλήματα συμβατότητας. Η εφαρμογή σας θα λειτουργεί χωρίς να εξαρτάται από το σύστημα (system agnostic), καθιστώντας ευκολότερη τη χρήση, τη δημιουργία, τη διαχείριση και την ανάπτυξη σε οποιοδήποτε κεντρικό σύστημα ή σύννεφο.

3. Αξιοποίηση πόρων
Το Docker είναι μια μορφή εικονικοποίησης, στην οποία (σε αντίθεση με τις εικονικές μηχανές) οι πόροι κατανέμονται απευθείας από τον κεντρικό υπολογιστή. Αυτό βοηθά στην εκτέλεση πολλών docker containers, αντί για λίγες μόνο εικονικές μηχανές. Κάθε container εκχωρεί μόνος του πόρους ανάλογα με τις ανάγκες της εφαρμογής την οποία εκτελεί.

4. Εξοικονόμηση
Στο Docker, όλα τα container μοιράζονται το ίδιο λειτουργικό σύστημα. Κάθε container εκτελεί τη δική του πλήρη εφαρμογή και τα dependencies της εφαρμογής του. Επιπλέον, εάν πολλά container χρησιμοποιούν τα ίδια dependencies (Docker containers), μπορούν να τις επαναχρησιμοποιήσουν χωρίς να εγκαταστήσουν ξανά τo ίδιο dependency στη μηχανή Docker.

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

6. Συνεχής ενσωμάτωση/Συνεχής ανάπτυξη (CI/CD)
Αυτή είναι μια μεθοδολογία DevOps που έχει σχεδιαστεί για να ενθαρρύνει τους προγραμματιστές να μοιράζονται αποθετήρια κώδικα εγκαίρως και γενικότερα με άλλους προγραμματιστές. Οι προγραμματιστές μπορούν στη συνέχεια να αναπτύξουν, να δοκιμάσουν, να λειτουργήσουν και να παρακολουθήσουν τον κώδικα εφαρμογής γρήγορα και αποτελεσματικά.

 

Συμπέρασμα

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