Docker | Τι είναι και πώς το εγκαθιστούμε στον υπολογιστή μας;

Ένα μεγάλο πρόβλημα που έχουν όσοι χρησιμοποιούν εικονικές μηχανές (VM), είναι ότι σε κάθε μία από αυτές πρέπει να φορτώνουν ένα ολόκληρο λειτουργικό σύστημα για να τρέξουν μία και μόνο εφαρμογή ή υπηρεσία. Το πρόβλημα δηλαδή με υπηρεσίες όπως το Virtualbox είναι ότι αν έχεις Windows PC και θέλεις να δοκιμάσεις μία Linux εφαρμογή, θα πρέπει να εγκαταστήσεις ολόκληρο το Linux και να του δώσεις μάλιστα συγκεκριμένους πόρους από τον επεξεργαστή, τη RAM και το δίσκο του υπολογιστή σου. Όλα αυτά όμως αποτελούν πλέον παρελθόν, καθώς με το Docker η όλη διαδικασία γίνεται ευκολότερα, ταχύτερα και κυρίως πιο οικονομικά από άποψη πόρων.

Τι είναι το Docker, πώς λειτουργεί και τι μας προσφέρει;

To Docker είναι μια πλατφόρμα λογισμικού ανοιχτού κώδικα με την οποία μπορούμε να κάνουμε virtualization σε επίπεδο λειτουργικού συστήματος. Σου δίνει δηλαδή τη δυνατότητα να εγκαταστήσεις μόνο την εφαρμογή / υπηρεσία που θέλεις (χωρίς έξτρα λειτουργικό σύστημα), σε ένα απομονωμένο περιβάλλον από το κανονικό σου σύστημα, κάνοντας τεράστια οικονομία στη CPU, τη GPU και τη RAM του υπολογιστή σου. Πρακτικά αυτό σημαίνει ότι δε χρειάζεται να έχεις έναν δυνατό (και ακριβό) υπολογιστή στην κατοχή σου, καθώς μπορείς να χρησιμοποιήσεις ακόμη και κάτι σαν το Raspberry Pi , ενώ μπορείς να τρέξεις πολύ περισσότερες εφαρμογές λόγω της οικονομίας πόρων.

\ 640x360
Virtualbox σε Ubuntu με guest OS το Windows 10

Σε απλά ελληνικά το Docker είναι μία υπηρεσία με την οποία μπορείς να δοκιμάσεις ή να τρέχεις μόνιμα, εφαρμογές που δε θέλεις ή δε γίνεται να εγκατασταθούν κανονικά στον υπολογιστή σου. Μπορείς δηλαδή σε ένα Windows PC να τρέξεις μία Linux υπηρεσία (και το αντίστροφο) ή μπορείς να δοκιμάσεις μία άγνωστη εφαρμογή, χωρίς να κινδυνεύσει το υπόλοιπο λειτουργικό σου σύστημα, αν είναι μολυσμένη με κάποιον ιό. Οι εφαρμογές αυτές τρέχουν σε μία… “φούσκα” (container), τα περιεχόμενα της οποίας είναι απομονωμένα από το υπόλοιπο περιβάλλον του υπολογιστή και μας δίνεται η δυνατότητα να τη… “σκάσουμε” όποτε θέλουμε, για να διαγράψουμε τα πάντα από το σύστημά μας!

Προφανώς και το Docker δεν απευθύνεται στο μέσο χρήστη desktop υπολογιστή, αν όμως θέλεις να έχεις το δικό σου οικιακό server για να “σηκώσεις” ένα Nextcloud ή ένα Home Assistant ή αν έχεις μία εταιρία και θέλεις ο server της να λειτουργεί σε καλύτερες συνθήκες, τότε το Docker είναι η σωστή επιλογή για να ξεκινήσεις. Τα κέρδη που έχεις με το Docker σε σχέση με ένα “συμβατικό” server είναι ότι:

  • το βασικό σου λειτουργικό σύστημα είναι ασφαλές,
  • αν συμβεί κάτι σε κάποιο container δεν επηρεάζονται όλα υπόλοιπα ούτε το λειτουργικό σύστημα,
  • η δημιουργία και η διαγραφή του κάθε container είναι πανεύκολη,
  • μπορείς να έχεις πολλούς web server ακόμη και σε αδύναμες συσκευές όπως το Raspberry Pi,
  • το σύστημά σου είναι τακτοποιημένο και καθαρό.

Η εγκατάσταση του Docker στο Linux (Debian)

Για να τρέξουμε ένα Docker container στον υπολογιστή μας θα χρειαστεί να δώσουμε μία εντολή στο τερματικό για να το εγκαταστήσουμε και άλλη μία για κάθε container που θέλουμε να τρέξουμε. Τόσο απλό είναι! Κατεβάζουμε λοιπόν το Docker στον υπολογιστή μας με την εντολή:

curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

Μόλις τελειώσει τη διαδικασία, προσθέτουμε αν θέλουμε στο docker group το χρήστη με τον οποίο κάνουμε login στον υπολογιστή μας, για να μη δίνουμε “sudo” σε κάθε εντολή. Αν για παράδειγμα ο χρήστης μας λέγεται “chris” θα δώσουμε την εντολή:

sudo usermod -aG docker chris

Για να αποθηκευτούν οι αλλαγές κάνουμε logout και ξανά login ή ακόμη καλύτερα επανεκκίνηση στον υπολογιστή μας. Για να δούμε τώρα τις πληροφορίες της εγκατάστασης και να ελέγξουμε αν όλα είναι εντάξει δίνουμε την εντολή:

docker version

Επίσης για να ελέγξουμε αν όλα είναι OK, μπορούμε να τρέξουμε και ένα δοκιμαστικό container με την εντολή:

docker run hello-world

Αν μας απαντήσει “Hello from Docker!” μαζί με άλλες πληροφορίες, όλα είναι έτοιμα και το σύστημά μας περιμένει να τρέξει τα πρώτα του container!

Εγκατάσταση ενός container (Heimdall)

Ας δούμε όμως στην πράξη τι μπορεί να μας προσφέρει το Docker και τα container του. Θα εγκαταστήσουμε λοιπόν το Heimdall, μία πολύ απλή υπηρεσία που μας προσφέρει μία “Αρχική σελίδα” για τον browser μας. Σε αυτή τη σελίδα μπορούμε να προσθέσουμε τις αγαπημένες μας ιστοσελίδες ή άλλες υπηρεσίες που τρέχουν σε container, για να τις βρίσκουμε εύκολα και γρήγορα.

\ 640x400
Η κεντρική σελίδα του Heimdall

Θα δημιουργήσουμε πρώτα ένα χώρο αποθήκευσης για το Heimdall με την εντολή:

docker volume create heimdall

Στη συνέχεια θα δημιουργήσουμε το container του με την εντολή:

docker run -d --name=heimdall -e PUID=1000 -e PGID=1000 -e TZ=europe/athens -p 80:80 -p 443:443 -v heimdall:/config --restart unless-stopped linuxserver/heimdall

Τώρα αν ανοίξουμε τον browser και πληκτρολογήσουμε τη λέξη “localhost” ή τη διεύθυνση IP του υπολογιστή μας (π.χ. 192.168.1.20), θα δούμε τη σελίδα του Heimdall!

Σημείωση:
Η εντολή για την εκκίνηση ενός container είναι λίγο τρομακτική εκ πρώτης όψεως, αλλά όταν την εξηγήσουμε σε επόμενο άρθρο, θα δούμε ότι δεν είναι τίποτα το ιδιαίτερο.

Απεγκατάσταση του Docker (Debian)

Το δοκιμάσαμε, δε μας άρεσε ή δεν το βρήκαμε χρήσιμο; Για να απεγκαταστήσουμε το Docker αρκεί να δώσουμε τις ακόλουθες εντολές:

sudo apt purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker

Εν κατακλείδι

Αυτή ήταν μία απλή εισαγωγή στον κόσμο του Docker. Σε επόμενα άρθρα θα ρίξουμε μια ματιά στις εντολές εκκίνησης container, στο γραφικό περιβάλλον του Portainer, στο Docker Compose, ενώ θα δούμε και συγκεκριμένες εντολές διαφόρων χρήσιμων υπηρεσιών για να δώσουμε μερικά παραδείγματα.

13 «Μου αρέσει»

Μπορούμε δηλαδή να τρέξουμε εφαρμογή exe μέσα στο Docker?

1 «Μου αρέσει»

Αν και δεν το έχω δοκιμάσει ακόμα, μπορείς να φτιάξεις ένα container με το επίσημο Windows core image της MS και εκεί να εγκαταστήσεις τα exe σου.

2 «Μου αρέσει»

Το θέμα είναι θα υποστηρίζει 3d γραφικά η θα μπορώ να τρέξω audio εφαρμογές μιας και κάνω μουσική παραγωγή?

Η ουσία του Docker είναι η απάντηση στο ερώτημα που έχει δεχτεί τουλάχιστον μια φορά κάθε προγραμματιστής

Μα τρέχει μια χαρά στον υπολογιστή μου

Ουσιαστικά είναι μια τεχνολογία απομόνωσης των εφαρμογών ώστε να έχουν μεταξύ τους την ελάχιστη δυνατή και ελεγχόμενη αλληλεπίδραση. Έχεις Redhat και ο προγραμματιστής Debian; Κανένα πρόβλημα. Θα πακετάρω το Debian σαν ένα container και όλα καλά.

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

Το βασικό Docker μπορείς να το φτιάξεις με περίπου 100 γραμμές κώδικα σε Bash. Απαιτεί μια βαθιά γνώση, αλλά είναι απλά χρήση κάποιων λειτουργιών του πυρήνα. Υπάρχει και η απομόνωση των γραφικών εφαρμογών, αλλά αυτό είναι άλλες τεχνολογίες. Τα snaps, appimage κλπ είναι στην μέση αυτού του δρόμου.

Χρησιμοποιείς περίπου τα ίδια χαρακτηριστικά και σε αυτό τον δρόμο βαδίζουμε. Το μεγάλο εμπόδιο σε αυτό τον δρόμο είναι το X11 και αυτός είναι ένας από τους που πρέπει να μεταβούμε στο Wayland. Αν θέλεις να ρίξεις μια ματιά στο μέλλον και θες να βρεις μια διανομή “για άνδρες” μην πας σε Arch, ούτε σε Arch χωρίς SystemD (αυτά είναι). Η διανομή που πρέπει να δεις είναι αυτή. Ταξίδι στο μέλλον

Μια άλλη διανομή να δεις είναι το Clear Linux απο την Intel

Και για να απαντήσω στο ερώτημα. Όχι δεν μπορείς. Σήμερα θέλεις τεχνολογίες εικονοποίησης και όχι τεχνολογίες απομόνωσης. Ναι ξέρω ότι υπάρχουν κάποιοι μηχανισμοί όπως να κάνεις export το Χ11 socket και πιθανά να μπορείς να κάνεις και RDS για Win App, αλλά δεν είναι αυτός ο δρόμος.

3 «Μου αρέσει»

Χρησιμοποιώ docker εδώ και λίγες εβδομάδες και σαν μέσος χρήστης βλέπω καταπληκτικά αποτελέσματα τα οποία με ενθουσιάζουν ως noob.
Ένας λόγος που στράφηκα προς τα linux είναι εκτός των άλλων το docker το οποίο στο WSL2 των windows υστερεί.
:crossed_fingers: :pray: είχα μεγάλη βοήθεια από τις κρυστάλλινες αναρτήσεις και site του @Chris σε πολλά θέματα. Έχει πέσει βέβαια και πολύ tube.
Για παράδειγμα μεταξύ των container που χειρίζομαι μέσω docker είναι
heimdall
portainer 2.0
rancher, τα βρίσκω σκούρα
duckdns
bookstack
plesk
taisun
yacht
και πάει λέγοντας
συνήθως με έτοιμες “συνταγές” docker compose yaml μέσω portainer 2.0 +add stack .
Στο φόρουμ βρέθηκα αναζητώντας να μάθω port forwarding… πάντως ένα είναι σίγουρο…το docker θα με κάνει να μάθω bash linux.
Χαίρομαι που βρίσκομαι στο φιλόξενο φόρουμ … μας.
Θα χρειαζόμουν κάποιες συμβουλές για ασφάλεια στο internet.

4 «Μου αρέσει»

Πες μου τι θέλεις να μάθεις ακριβώς γιατί ψάχνω ιδέες για άρθρα.

Καλώς ήρθες @nikaskonstantinos στην παρέα μας :hugs:.

1 «Μου αρέσει»

2 posts were split to a new topic: Συμβουλές σε ένα νέο χρήστη