Πριν πολλά φεγγάρια ήθελα να πακετάρω μια web εφαρμογή μου, για να μπορεί να την πάρει κάποιος και να την εγκαταστήσει εύκολα. Μαζί με όλες τις… παραξενιές που απαιτούσε. Μου λέει ένας φίλος “βάλε Docker να γουστάρεις“.
Πάω κι εγώ να βάλω Docker, χωρίς να το ψάξω και πολύ, με την αίσθηση ότι είναι κάτι σαν Virtual Machine. Αυτό ήξερα, αυτό εμπιστευόμουν. Φυσικά δεν έβγαλα άκρη, αφού πήγα κι εγώ να στήσω Ubuntu με τα πάντα όλα μέσα. Χώσε και Apache, χώσε και PHP, χώσε και mySQL, χώσε και το απαραίτητο third party software. Κάνω restart το container, άφαντα τα data μου.
Με κορόιδεψαν με αυτή τη σαχλαμάρα, είπα. Τι περίεργα μαγικά είναι αυτά; Και άφησα το Docker κατά μέρους. Μέχρι που μετά από καιρό το έπιασα σωστά αυτή τη φορά. Διάβασα σχετική αρθρογραφία, είδα tutorials και μπήκα στο νόημα. Δεν ξανακοίταξα ποτέ πίσω. Και χάθηκα στο ηλιοβασίλεμα…
Τι είναι όμως το Docker; Το Docker όντως είναι κάτι σαν Virtual Machine. Αλλά δεν είναι. Μια Virtual Machine τρέχει μέσα σε ένα λειτουργικό (π.χ. Linux) και είναι η ίδια ένα ολόκληρο λειτουργικό. Είναι ένα ολόκληρο λειτουργικό, μέσα σε ένα ολόκληρο λειτουργικό. Και όλοι μαζί καταναλώνουν resources σαν να μην υπάρχει αύριο.
Ένα Docker container όμως από την άλλη, χρησιμοποιεί το host λειτουργικό. Χρησιμοποιεί τον πυρήνα του host. Δεν έχει δικό του πυρήνα. Με αποτέλεσμα να είναι πολύ ελαφρύ και να ξοδεύει μόνο τα αναγκαία resources, για να τρέξουν τα services που θέλει. Κάθε container είναι πλήρως απομονωμένο από το host λειτουργικό και από άλλα containers.
Η λογική του Docker, είναι ότι σηκώνουμε ένα container για κάθε service που θέλουμε. Θέλουμε Apache; Σηκώνουμε ένα container με Apache. Θέλουμε mySQL; Σηκώνουμε ένα container με mySQL. Και πάει λέγοντας. Φυσικά μπορούμε να τα χώσουμε όλα σαν ένα ενιαίο λειτουργικό σύστημα, αλλά δεν έχει κανένα νόημα όλο αυτό. Ένα γατάκι πεθαίνει κάθε φορά.
Μπορούμε επίσης να χρησιμοποιούμε διαφορετικές εκδόσεις ενός service σε ξεχωριστά containers. Θέλουμε PHP 5.6; Σηκώνουμε container με PHP 5.6. Θέλουμε με 7.4; Σηκώνουμε με 7.4. Αλλάζουμε πολύ εύκολα τις εκδόσεις και μπορούμε να δοκιμάζουμε την εφαρμογή μας σε διάφορα περιβάλλοντα.
Κάθε container δεν κρατάει δεδομένα μέσα του. Δηλαδή αν τρέχουμε ένα container με mySQL, τα δεδομένα της βάσης θα χαθούν αν κάνουμε restart το service. Γι’ αυτό τον λόγο κάνουμε αντιστοίχιση φακέλου του host μηχανήματος με φάκελο του container. π.χ. αντιστοιχούμε τον φάκελο /mysql/data από το host, στον φάκελο /var/lib/mysql εσωτερικά του container. Έτσι τώρα, τα δεδομένα της βάσης θα σώζονται στον φάκελο /mysql/data και θα συγχρονίζεται το container με αυτά.
Με το Docker μπορούμε να πακετάρουμε μια εφαρμογή μας, να μπορεί κάποιος να την χρησιμοποιήσει, είτε για development, είτε για κανονική χρήση. Το μόνο που χρειάζεται, είναι ένα αρχείο που περιγράφει ποια containers και πως θα σηκωθούν. Η εφαρμογή θα έχει στην διάθεση της όλα τα services που χρειάζεται, στην έκδοση που τα χρειάζεται, όπως τα χρειάζεται.
Προγραμματιστές που δουλεύουν ταυτόχρονα μια εφαρμογή, μπορούν να έχουν όλοι πανομοιότυπο development περιβάλλον, ανεξάρτητα σε πιο host μηχάνημα δουλεύουν. Ακόμη και σε διαφορετικά λειτουργικά (Linux, Mac OS, Windows)
Ενώ και το τελικό deploy της εφαρμογής σε κάποιον server μπορεί να γίνει πανεύκολα, σηκώνοντας κι εκεί όλα τα Docker containers που χρειάζονται.
Το Docker είναι σήμερα από τα βασικότερα εργαλεία ενός προγραμματιστή. Πραγματικά όποιος αρχίσει να το χρησιμοποιεί, απορεί μετά πως στο διάολο δούλευε χωρίς αυτό τόσα χρόνια. Απλοποιεί τόσο πολύ διάφορες καταστάσεις και διαδικασίες, που είναι μαζοχισμός να μην το χρησιμοποιείς.
Κι αν εγώ δεν σας τα εξήγησα ωραία, έχετε μια δεύτερη ευκαιρία. Ο τύπος στο παρακάτω βίντεο τα εξηγεί πολύ πιο ωραία (σαν τον Αλέφαντο). Νομίζω είναι το καλύτερο βίντεο που έχω δει για εισαγωγή στο Docker.
Δημοσιεύτηκε αρχικά στο error.gr
Στη περίοδο που διανύουμε , η εξ αποστάσεως εκπαίδευση έχει πάρει τα πάνω της για τα καλά …
Οπότε τι καλύτερο, από το να βασιστούμε σε ΕΛ/ΛΑΚ λύσεις που είναι δοκιμασμένες χρόνια και είναι και στην προτίμηση της ακαδημαϊκής κοινότητας ..
Και άλλα πολλά από https://edu.ellak.gr
Ορίστε τα OpenDelos ακι Open eClass: Δυο πλατφόρμες ανοιχτού κώδικα για την εκπαιδευτική και ακαδημαϊκή κοινότητα από το GUNET.
” Με στόχο την καταγραφή, τη διαχείριση και τη μετάδοση εκπαιδευτικού υλικού, η Open Delos είναι μια πλατφόρμα διαχείρισης και διάθεσης πολυμορφικού εκπαιδευτικού περιεχομένου η οποία σχεδιάστηκε και αναπτύχθηκε από το Ακαδημαϊκό Διαδίκτυο, διατίθεται από τον Noέμβριο 2014 και υποστηρίζει τα Ανοικτά Ακαδημαϊκά Μαθήματα, σε συνδυασμό με την πλατφόρμα Open eClass και το opencourses.gr, την Εθνική Πύλη Αναζήτησης ανοικτών μαθημάτων. Η Open Delos παρέχει εργαλεία τα οποία υποστηρίζουν την παραγωγή πολυμορφικού υλικού, τη δημοσίευση και την αναζήτηση εκπαιδευτικού περιεχομένου, την επεξεργασία βιντεοδιαλέξεων και τον συγχρονισμό τους με διαφάνειες παρουσιάσεων του εκάστοτε διδάσκοντα. Η πλατφόρμα υποστηρίζει προγραμματισμό βιντεοσκοπήσεων και ζωντανές μεταδόσεις, με απομακρυσμένη διαχείριση IP καμερών, ενώ στις λειτουργίες της περιλαμβάνεται η αναζήτηση και η αναπαραγωγή των συγχρονισμένων διαλέξεων, με εμπλουτισμένο player. Η πλατφόρμα Open Delos έχει 4 βασικές λειτουργίες: ”
To KDE Plasma είναι ένα ένα από τα πιο δημοφιλή περιβάλλοντα για Linux. Οι δημιουργοί του ανακοίνωσαν ότι ετοιμάζουν ειδική έκδοση και για μεγάλες τηλεοράσεις.
Το νέο project ονομάζεται Plasma Bigscreen και προορίζεται να τρέχει σε Single Board Computers. π.χ. Raspberry Pi. Θα χρησιμοποιεί επίσης το AI voice assistant της Mycroft.
Το Plasma Bigscreen δεν θα είναι κατάλληλο μόνο για media εφαρμογές, αλλά γενικά για desktop εφαρμογές, που θα έχουν σχεδιαστεί για το συγκεκριμένο περιβάλλον. Ο χειρισμός θα μπορεί να γίνει μόνο με ένα remote control.
Το project θα είναι φυσικά δωρεάν και open source. H επερχόμενη beta έκδοση δουλεύει ήδη σε Raspberry Pi 4.
Δημοσιεύτηκε αρχικά στο error.gr