Εκπαιδευτικό σεμινάριο για το Docker για αρχάριους
Στο σεμινάριό μας για το Docker, σας παρουσιάζουμε την πλατφόρμα εικονικοποίησης Docker και σας δείχνουμε πώς να χρησιμοποιήσετε το Docker στο σύστημα Ubuntu 22.04 σας, ακολουθώντας απλές οδηγίες.
Δομή και χαρακτηριστικά του Docker
«Δημιουργήστε, διανείμετε και εκτελέστε οποιαδήποτε εφαρμογή, οπουδήποτε» – αυτό είναι το σύνθημα της Docker. Η πλατφόρμα κοντέινερ ανοιχτού κώδικα προσφέρει μια ευέλικτη εναλλακτική λύση που απαιτεί ελάχιστους πόρους για την προσομοίωση στοιχείων υλικού με βάση εικονικές μηχανές (VM).
Ενώ η παραδοσιακή εικονικοποίηση υλικού βασίζεται στην εκκίνηση πολλαπλών συστημάτων-επισκεπτών σε ένα κοινό σύστημα-κεντρικό, οι εφαρμογές Docker εκτελούνται ως απομονωμένες διεργασίες στο ίδιο σύστημα με τη βοήθεια κοντέινερ. Αυτό ονομάζεται εικονικοποίηση βάσει κοντέινερ, γνωστή και ως εικονικοποίηση σε επίπεδο λειτουργικού συστήματος.

Ένα σημαντικό πλεονέκτημα της εικονικοποίησης με βάση τα κοντέινερ είναι ότι εφαρμογές με διαφορετικές απαιτήσεις μπορούν να εκτελούνται ανεξάρτητα η μία από την άλλη, χωρίς να απαιτείται ο επιπλέον φόρτος ενός ξεχωριστού συστήματος-επισκέπτη. Επιπλέον, με τα κοντέινερ, οι εφαρμογές μπορούν να αναπτυχθούν σε διάφορες πλατφόρμες και σε διαφορετικές υποδομές, χωρίς να χρειάζεται να προσαρμοστούν στις διαμορφώσεις υλικού ή λογισμικού του συστήματος-υποδοχής.
Το Docker είναι το πιο δημοφιλές λογισμικό που παρέχει στους χρήστες τεχνολογία εικονικοποίησης βασισμένη σε κοντέινερ. Η πλατφόρμα ανοιχτού κώδικα βασίζεται σε τρία βασικά στοιχεία. Για την εκτέλεση κοντέινερ, οι χρήστες χρειάζονται μόνο τον κινητήρα Docker καθώς και ειδικές εικόνες Docker, τις οποίες μπορούν να προμηθευτούν μέσω του Docker Hub ή να δημιουργήσουν οι ίδιοι.
Εικόνες Docker
Όπως και οι εικονικές μηχανές, τα κοντέινερ Docker βασίζονται σε εικόνες Docker. Μια εικόνα είναι ένα πρότυπο μόνο για ανάγνωση που περιέχει όλες τις οδηγίες που χρειάζεται ο κινητήρας Docker για να δημιουργήσει ένα κοντέινερ. Μια εικόνα Docker περιγράφεται ως μια φορητή εικόνα ενός κοντέινερ με τη μορφή αρχείου κειμένου, που ονομάζεται επίσης Dockerfile. Αν πρόκειται να εκκινηθεί ένα κοντέινερ σε ένα σύστημα, τότε πρώτα φορτώνεται ένα πακέτο με την αντίστοιχη εικόνα, εφόσον αυτή δεν υπάρχει τοπικά. Η εικόνα που φορτώνεται παρέχει το απαραίτητο σύστημα αρχείων, συμπεριλαμβανομένων όλων των παραμέτρων για το περιβάλλον εκτέλεσης. Ένα κοντέινερ μπορεί να θεωρηθεί ως μια διαδικασία που εκτελείται από μια εικόνα.
Το Docker Hub
Το Docker Hub είναι ένα μητρώο αποθετηρίων λογισμικού που βασίζεται στο cloud, ένα είδος βιβλιοθήκης για εικόνες Docker. Η διαδικτυακή υπηρεσία χωρίζεται σε δημόσιο και ιδιωτικό τμήμα. Το δημόσιο τμήμα προσφέρει στους χρήστες τη δυνατότητα να ανεβάζουν εικόνες που έχουν αναπτύξει οι ίδιοι και να τις μοιράζονται με την κοινότητα. Εδώ, υπάρχουν πολλές επίσημες εικόνες που διατίθενται από την ομάδα προγραμματιστών του Docker και από καθιερωμένα έργα ανοιχτού κώδικα. Οι εικόνες που ανεβάζονται στον ιδιωτικό τομέα του μητρώου δεν είναι προσβάσιμες στο κοινό και έτσι μπορούν να μοιραστούν, για παράδειγμα, εντός του εσωτερικού κύκλου μιας εταιρείας ή με φίλους ή γνωστούς. Μπορείτε να αποκτήσετε πρόσβαση στο Docker Hub στη διεύθυνση hub.docker.com.
Ο κινητήρας Docker
Στο επίκεντρο του έργου Docker βρίσκεται ο μηχανισμός Docker. Πρόκειται για μια εφαρμογή πελάτη-διακομιστή ανοιχτού κώδικα, η οποία διατίθεται σε όλους τους χρήστες στην τρέχουσα έκδοση σε όλες τις καθιερωμένες πλατφόρμες.
Η βασική αρχιτεκτονική του κινητήρα Docker χωρίζεται σε τρία στοιχεία: ένα δαίμονα με λειτουργίες διακομιστή, μια διεπαφή προγραμματισμού (API) βασισμένη στο πρότυπο προγραμματισμού REST (Representational State Transfer) και το τερματικό του λειτουργικού συστήματος (διεπαφή γραμμής εντολών, CLI) ως διεπαφή χρήστη (πελάτης).
- Δαίμονας Docker: Ως διακομιστής για τον κινητήρα Docker, χρησιμοποιείται μια διαδικασία δαίμονα. Ο δαίμονας Docker εκτελείται στο παρασκήνιο του συστήματος-ξενιστή και χρησιμοποιείται για τον κεντρικό έλεγχο του κινητήρα Docker. Αυτή η λειτουργία δημιουργεί και διαχειρίζεται όλες τις εικόνες, τα κοντέινερ ή τα δίκτυα.
- REST-API: Το REST-API καθορίζει ένα σύνολο διεπαφών που επιτρέπουν σε άλλα προγράμματα να επικοινωνούν με το δαίμονα Docker και να του δίνουν οδηγίες. Ένα από αυτά τα προγράμματα είναι το τερματικό του λειτουργικού συστήματος.
- Τερματικό: Ως πρόγραμμα-πελάτης, το Docker χρησιμοποιεί το τερματικό του λειτουργικού συστήματος. Αυτό, ενσωματωμένο με το δαίμονα Docker μέσω του REST-API, επιτρέπει στους χρήστες να το ελέγχουν μέσω σεναρίων ή εισόδου χρήστη.
Το 2017, ο κινητήρας Docker μετονομάστηκε σε Docker Community Edition (συντομογραφία: Docker CE), αλλά η επίσημη τεκμηρίωση και τα αποθετήρια του Docker εξακολουθούν ως επί το πλείστον να χρησιμοποιούν την παλιά ονομασία. Εκτός από το Docker CE, υπάρχει επίσης το Docker Enterprise Edition (Docker EE), το οποίο διαθέτει ορισμένες λειτουργίες premium. Ωστόσο, δεν είναι δωρεάν και απευθύνεται κυρίως σε επιχειρήσεις.
Με τις εντολές του Docker, τα κοντέινερ λογισμικού των χρηστών μπορούν να εκκινούνται, να τερματίζονται και να διαχειρίζονται απευθείας από το τερματικό. Η επικοινωνία με το δαίμονα πραγματοποιείται μέσω της εντολής docker και εντολών όπως build, pull ή run. Ο πελάτης και ο διακομιστής μπορούν να βρίσκονται στο ίδιο σύστημα. Οι χρήστες έχουν επίσης τη δυνατότητα να έχουν πρόσβαση σε ένα δαίμονα Docker σε άλλο σύστημα. Ανάλογα με τον τύπο της σύνδεσης που δημιουργείται, η επικοινωνία μεταξύ του πελάτη και του διακομιστή πραγματοποιείται μέσω του REST-API, μέσω υποδοχών UNIX ή μέσω μιας διεπαφής δικτύου.
Το παρακάτω διάγραμμα απεικονίζει την αλληλεπίδραση των επιμέρους στοιχείων του Docker με τις εντολές docker build, docker pull και docker run:

Η εντολή docker build δίνει εντολή στο δαίμονα του Docker να δημιουργήσει μια εικόνα (διακεκομμένη γραμμή). Για τον σκοπό αυτό, πρέπει να υπάρχει διαθέσιμο ένα αντίστοιχο αρχείο Dockerfile. Εάν η εικόνα δεν πρόκειται να δημιουργηθεί, αλλά να φορτωθεί από ένα αποθετήριο στο Docker Hub, τότε χρησιμοποιείται η εντολή docker pull (διακεκομμένη γραμμή). Εάν δοθεί εντολή στο δαίμονα Docker μέσω docker run να εκκινήσει ένα κοντέινερ, το πρόγραμμα παρασκηνίου ελέγχει εάν η αντίστοιχη εικόνα κοντέινερ είναι διαθέσιμη τοπικά. Εάν είναι, τότε το κοντέινερ εκτελείται (συνεχής γραμμή). Εάν ο δαίμονας δεν μπορεί να βρει την εικόνα, ξεκινά αυτόματα μια λήψη από το αποθετήριο.
Εργασία με το Docker
Τώρα ήρθε η ώρα να εξοικειωθείτε με τις εφαρμογές της πλατφόρμας κοντέινερ. Αν δεν έχετε εγκαταστήσει ακόμα τον κινητήρα Docker, μπορείτε να το κάνετε μέσω του τερματικού του Linux. Μπορείτε να βρείτε οδηγίες για το πώς να το κάνετε αυτό στο άρθρο μας με τίτλο«Εγκατάσταση του Docker στο Ubuntu 22.04». Μάθετε παρακάτω πώς να χειρίζεστε τον κινητήρα Docker από το τερματικό, τι μπορεί να σας προσφέρει το Docker Hub και γιατί τα κοντέινερ Docker μπορούν να φέρουν επανάσταση στον τρόπο με τον οποίο εργάζεστε με τις εφαρμογές.
Πώς να διαχειριστείτε τον κινητήρα Docker
Από την έκδοση 16.04, το Ubuntu χρησιμοποιεί το πρόγραμμα παρασκηνίου systemd(συντομογραφία του «system daemon») για τη διαχείριση των διεργασιών.Το systemd είναιμια διεργασία εκκίνησης (init), η οποία χρησιμοποιείται και σε άλλες διανομές Linux, όπως το RHEL, το CentOS ή το Fedora. Συνήθως,το systemd λαμβάνειτον αριθμό διεργασίας 1. Ως πρώτη διεργασία του συστήματος, ο δαίμονας είναι υπεύθυνος για την εκκίνηση, την παρακολούθηση και τον τερματισμό όλων των επόμενων διεργασιών. Στις προηγούμενες εκδόσεις του Ubuntu (14.10 και παλαιότερες), τοπρόγραμμα παρασκηνίου upstart αναλαμβάνει αυτή τη λειτουργία.
Το δαίμονα του Docker μπορεί επίσης να ελέγχεται μέσω του systemd. Στην τυπική εγκατάσταση, η πλατφόρμα κοντέινερ έχει ρυθμιστεί έτσι ώστε το δαίμονα να ξεκινά αυτόματα κατά την εκκίνηση του συστήματος. Αυτή η προεπιλεγμένη ρύθμιση μπορεί να προσαρμοστεί μέσω του εργαλείου γραμμής εντολών systemctl.
Με το systemctl, στέλνετε εντολές στο systemd για να ελέγξετε μια διεργασία ή να ζητήσετε πληροφορίες για την κατάστασή της. Η σύνταξη μιας τέτοιας εντολής έχει ως εξής:
systemctl [OPTION] [COMMAND]bashΟρισμένες εντολές αναφέρονται σε συγκεκριμένους πόρους (για παράδειγμα, το Docker). Στην ορολογία του systemd, αυτοί ονομάζονται «μονάδες». Σε αυτή την περίπτωση, η εντολή αποτελείται από την αντίστοιχη οδηγία και το όνομα της μονάδας στην οποία απευθύνεται.
Αν θέλετε να ενεργοποιήσετε την αυτόματη εκκίνηση του δαίμονα Docker (ενεργοποίηση) ή να την απενεργοποιήσετε (απενεργοποίηση), χρησιμοποιήστε το εργαλείο γραμμής εντολών systemctl με τις ακόλουθες εντολές:
sudo systemctl enable docker
sudo systemctl disable dockerbashΤο εργαλείο γραμμής εντολών systemctl σας επιτρέπει να ελέγξετε την κατάσταση μιας μονάδας:
sudo systemctl status dockerbashΕάν ο μηχανισμός Docker στο σύστημα Ubuntu σας είναι ενεργός, τότε η έξοδος στο τερματικό θα πρέπει να μοιάζει με την παρακάτω οθόνη:

Εάν ο κινητήρας Docker είναι απενεργοποιημένος αυτή τη στιγμή, θα λάβετε την ένδειξη κατάστασης «inactive (dead)». Σε αυτή την περίπτωση, πρέπει να εκκινήσετε χειροκίνητα το δαίμονα Docker για να εκτελέσετε κοντέινερ.

Αν θέλετε να ξεκινήσετε, να σταματήσετε ή να επανεκκινήσετε χειροκίνητα τον κινητήρα Docker, εκτελέστε μία από τις παρακάτω εντολές στο systemd.
Για να ξεκινήσετε το απενεργοποιημένο δαίμονα, χρησιμοποιήστε το systemctl σε συνδυασμό με την εντολή start:
sudo systemctl start dockerbashΑν θέλετε να τερματίσετε το δαίμονα του Docker, χρησιμοποιήστε την εντολή stop:
sudo systemctl stop dockerbashΗ εντολή restart ζητά την επανεκκίνηση του κινητήρα:
sudo systemctl restart dockerbashΠώς να χρησιμοποιήσετε το Docker Hub
Αν ο κινητήρας Docker αποτελεί την καρδιά της πλατφόρμας κοντέινερ, τότε το Docker Hub είναι η ψυχή του έργου ανοιχτού κώδικα. Εδώ συναντάται η κοινότητα. Σε αυτό το μητρώο που βασίζεται στο cloud, οι χρήστες μπορούν να βρουν όλα όσα χρειάζονται για να δώσουν ζωή στην εγκατάστασή τους του Docker.
Η διαδικτυακή υπηρεσία προσφέρει διάφορα επίσημα αποθετήρια με περισσότερες από 100.000 δωρεάν εφαρμογές. Οι χρήστες έχουν τη δυνατότητα να δημιουργήσουν ένα αρχείο εικόνων και να το χρησιμοποιούν από κοινού με ομάδες εργασίας. Εκτός από την επαγγελματική υποστήριξη που παρέχει η ομάδα ανάπτυξης, οι αρχάριοι μπορούν να βρουν εδώ τρόπους επικοινωνίας με την κοινότητα των χρηστών. Στο GitHub υπάρχει ένα φόρουμ για την υποστήριξη της κοινότητας.

Εγγραφή στο Docker Hub
Η εγγραφή στο Docker Hub είναι δωρεάν. Οι χρήστες χρειάζονται μόνο μια διεύθυνση email και το Docker ID που έχουν επιλέξει. Αυτό χρησιμεύει αργότερα ως προσωπικός χώρος αποθήκευσης και παρέχει στους χρήστες πρόσβαση σε όλες τις υπηρεσίες του Docker. Προς το παρόν, αυτή η προσφορά περιλαμβάνει το Docker Cloud, το Docker Store και επιλεγμένα προγράμματα beta, εκτός από το Docker Hub. Επιτρέπει επίσης τη χρήση του Docker ID ως στοιχείων σύνδεσης για το κέντρο υποστήριξης του Docker, καθώς και για το Docker Success Portal και το φόρουμ του Docker.
Η διαδικασία εγγραφής αποτελείται από πέντε βήματα:
- Επιλέξτε το Docker ID σας: Ως πρώτο βήμα της διαδικασίας εγγραφής, επιλέξτε ένα όνομα χρήστη που θα χρησιμοποιηθεί αργότερα ως το προσωπικό σας Docker ID.
- Εισαγάγετε μια διεύθυνση email: Εισαγάγετε την τρέχουσα διεύθυνση email σας. Σημειώστε ότι θα πρέπει να επιβεβαιώσετε την εγγραφή σας στο Docker Hub μέσω email.
- Επιλέξτε έναν κωδικό πρόσβασης: Επιλέξτε έναν μυστικό κωδικό πρόσβασης.
- Υποβάλετε την εγγραφή σας: Κάντε κλικ στο «Εγγραφή» για να υποβάλετε την εγγραφή σας. Μόλις μεταδοθούν πλήρως τα δεδομένα, το Docker θα στείλει έναν σύνδεσμο για να επαληθεύσετε τη διεύθυνση email σας στο συγκεκριμένο φάκελο εισερχομένων που έχετε καθορίσει.
- Επιβεβαιώστε τη διεύθυνση email σας: Επιβεβαιώστε τη διεύθυνση email σας κάνοντας κλικ στον σύνδεσμο επαλήθευσης.
Οι διαδικτυακές υπηρεσίες του έργου Docker είναι άμεσα διαθέσιμες μετά την εγγραφή σας στον περιηγητή. Εδώ μπορείτε να δημιουργήσετε αποθετήρια και ομάδες εργασίας ή να αναζητήσετε δημόσιους πόρους στο Docker Hub χρησιμοποιώντας την επιλογή «Εξερεύνηση».

Μπορείτε επίσης να συνδεθείτε απευθείας από το τερματικό του λειτουργικού σας συστήματος χρησιμοποιώντας την εντολή docker login. Μια αναλυτική περιγραφή της εντολής μπορείτε να βρείτε στην τεκμηρίωση του Docker.
Κατ’ αρχήν, το Docker Hub είναι διαθέσιμο και σε όσους δεν διαθέτουν λογαριασμό ή Docker ID. Σε αυτή την περίπτωση, όμως, είναι δυνατή μόνο η φόρτωση εικόνων από δημόσια αποθετήρια. Η μεταφόρτωση (push) των δικών σας εικόνων δεν είναι δυνατή χωρίς Docker ID.
Δημιουργία αποθετηρίων στο Docker Hub
Ο δωρεάν λογαριασμός στο Docker Hub περιλαμβάνει ένα ιδιωτικό αποθετήριο και προσφέρει τη δυνατότητα δημιουργίας απεριόριστου αριθμού δημόσιων αποθετηρίων. Εάν χρειαστείτε περισσότερα ιδιωτικά αποθετήρια, μπορείτε να τα αποκτήσετε με μια αναβάθμιση επί πληρωμή.
Για να δημιουργήσετε ένα αποθετήριο, ακολουθήστε τα παρακάτω βήματα:
- Επιλέξτε ένα χώρο ονομάτων: Τα αποθετήρια που δημιουργούνται πρόσφατα αντιστοιχίζονται αυτόματα στον χώρο ονομάτων του Docker ID σας. Έχετε επίσης τη δυνατότητα να εισαγάγετε το αναγνωριστικό ενός οργανισμού στον οποίο ανήκετε.
- Ονομάστε το αποθετήριο: Εισαγάγετε ένα όνομα για το νεοδημιουργημένο αποθετήριο.
- Προσθέστε μια περιγραφή: Προσθέστε μια σύντομη περιγραφή για το αποθετήριό σας.
- Ορίστε την ορατότητα: Αποφασίστε αν το αποθετήριο θα είναι ορατό στο κοινό (δημόσιο) ή αν θα είναι προσβάσιμο μόνο από εσάς ή τον οργανισμό σας (ιδιωτικό).
Επιβεβαιώστε τις καταχωρίσεις σας κάνοντας κλικ στο «Δημιουργία».

Δημιουργία ομάδων και οργανισμών
Μέσω του hub, το Docker παρέχει μια πλατφόρμα βασισμένη στο cloud, στην οποία οι εικόνες που δημιουργούνται από τους χρήστες διαχειρίζονται κεντρικά και μοιράζονται εύκολα με ομάδες εργασίας. Στην ορολογία του Docker, αυτές ονομάζονται «οργανισμοί». Ακριβώς όπως και οι λογαριασμοί χρηστών, οι οργανισμοί λαμβάνουν μοναδικά αναγνωριστικά, μέσω των οποίων μπορούν να παρέχονται και να κατεβαίνουν εικόνες. Τα δικαιώματα και οι ρόλοι εντός ενός οργανισμού μπορούν να εκχωρηθούν μέσω ομάδων. Για παράδειγμα, οι χρήστες που έχουν ενταχθεί στην ομάδα «Ιδιοκτήτες» έχουν την εξουσία να δημιουργούν ιδιωτικά ή δημόσια αποθετήρια και να εκχωρούν δικαιώματα πρόσβασης.
Οι ομάδες εργασίας μπορούν επίσης να δημιουργηθούν και να διαχειριστούν απευθείας μέσω του πίνακα ελέγχου. Περισσότερες πληροφορίες σχετικά με τους οργανισμούς και τις ομάδες μπορείτε να βρείτε στην τεκμηρίωση του Docker.
Εργασία με εικόνες και κοντέινερ
Ως το πρώτο σημείο επαφής για τους επίσημους πόρους του Docker, το Docker Hub αποτελεί το σημείο εκκίνησης για αυτή την εισαγωγή στη διαχείριση εικόνων και κοντέινερ. Η ομάδα προγραμματιστών έχει διαθέσει την εικόνα επίδειξης «whalesay», η οποία θα χρησιμεύσει ως βάση για το παρακάτω σεμινάριο Docker.
Λήψη εικόνων Docker
Μπορείτε να βρείτε την εικόνα «whalesay» αν επισκεφθείτε τον ιστότοπο του Docker Hub και πληκτρολογήσετε τον όρο «whalesay» στη γραμμή αναζήτησης δίπλα στο λογότυπο του Docker.

Στα αποτελέσματα αναζήτησης, κάντε κλικ στον πόρο με τον τίτλο docker/whalesay για να αποκτήσετε πρόσβαση στο δημόσιο αποθετήριο αυτής της εικόνας.
Τα αποθετήρια Docker είναι πάντα δομημένα με τον ίδιο τρόπο. Στην κεφαλίδα της σελίδας, οι χρήστες βλέπουν τον τίτλο της εικόνας, την κατηγορία του αποθετηρίου και την ώρα της τελευταίας μεταφόρτωσης (last pushed).

Κάθε αποθετήριο Docker διαθέτει επίσης τα ακόλουθα πλαίσια πληροφοριών:
- Περιγραφή: Λεπτομερής περιγραφή, η οποία συνήθως περιλαμβάνει οδηγίες χρήσης
- Εντολή Docker pull: Εντολή γραμμής εντολών που χρησιμοποιείται για τη λήψη της εικόνας από το αποθετήριο (
pull) - Ιδιοκτήτης: Πληροφορίες σχετικά με τον δημιουργό του αποθετηρίου
- Σχόλια: Ενότητα σχολίων στο τέλος της σελίδας
Τα πλαίσια πληροφοριών του αποθετηρίου δείχνουν ότι το whalesay είναι μια τροποποίηση του ανοιχτού κώδικα Perl cowsay. Το πρόγραμμα, που αναπτύχθηκε από τον Tony Monroe το 1999, δημιουργεί ένα γραφικό ASCII με τη μορφή αγελάδας, το οποίο εμφανίζεται μαζί με ένα μήνυμα στο τερματικό του χρήστη.
Για να κατεβάσετε το docker/whalesay, χρησιμοποιήστε την εντολή docker pull:
docker pull [OPTIONS] NAME [:TAG|@DIGEST]bashΗ εντολή docker pull δίνει εντολή στο δαίμονα να φορτώσει μια εικόνα από το αποθετήριο. Καθορίζετε ποια εικόνα είναι αυτή εισάγοντας τον τίτλο της εικόνας (NAME). Μπορείτε επίσης να καθορίσετε στο Docker τον τρόπο με τον οποίο πρέπει να εκτελεστεί η επιθυμητή εντολή (OPTIONS). Οι προαιρετικές παραμέτρους περιλαμβάνουν ετικέτες (:TAG) και ατομικούς αριθμούς αναγνώρισης (@DIGEST), οι οποίοι σας επιτρέπουν να κατεβάσετε μια συγκεκριμένη έκδοση μιας εικόνας.
Μπορείτε να δημιουργήσετε ένα τοπικό αντίγραφο της εικόνας docker/whalesay με την ακόλουθη εντολή:
docker pull docker/whalesaybashΓενικά, μπορείτε να παραλείψετε αυτό το βήμα. Αν θέλετε να εκκινήσετε ένα κοντέινερ, το δαίμονα του Docker κατεβάζει αυτόματα τις εικόνες από το αποθετήριο που δεν μπορεί να βρει στο τοπικό σύστημα.
Εκκίνηση εικόνων Docker ως κοντέινερ
Για να εκκινήσετε μια εικόνα Docker, χρησιμοποιήστε την εντολή docker run:
docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]bashΤο μόνο υποχρεωτικό στοιχείο της εντολής docker run είναι το όνομα της επιθυμητής εικόνας Docker. Ωστόσο, όταν εκκινείτε ένα κοντέινερ, έχετε επίσης τη δυνατότητα να ορίσετε επιπλέον επιλογές, ετικέτες (TAGs) και DIGESTs. Επιπλέον, η εντολή docker run μπορεί να συνδυαστεί με άλλες εντολές που εκτελούνται αμέσως μόλις ξεκινήσει το κοντέινερ. Σε αυτή την περίπτωση, το CMD (COMMAND, που ορίζεται από τον δημιουργό της εικόνας και εκτελείται αυτόματα κατά την εκκίνηση του κοντέινερ) αντικαθίσταται. Άλλες προαιρετικές ρυθμίσεις μπορούν να οριστούν μέσω πρόσθετων παραμέτρων (ARG…). Αυτό καθιστά δυνατή, για παράδειγμα, την προσθήκη χρηστών ή τη μεταφορά μεταβλητών περιβάλλοντος.
Χρησιμοποιήστε την εντολή της γραμμής εντολών
docker run docker/whalesay cowsay boobashγια να κατεβάσετε το υπάρχον σενάριο Perl ως εικόνα και να το εκτελέσετε σε ένα κοντέινερ. Θα διαπιστώσετε ότι το whalesay διαφέρει σημαντικά από το αρχικό σενάριο.

Εάν εκτελεστεί η εικόνα docker/whalesay, το σενάριο εμφανίζει ένα γραφικό ASCII με τη μορφή φάλαινας, καθώς και το μήνυμα κειμένου «boo», το οποίο έχει δοθεί με την εντολή cowsay στο τερματικό.
Όπως και στην δοκιμαστική εκτέλεση, το δαίμονα αναζητά πρώτα την επιθυμητή εικόνα στον τοπικό κατάλογο αρχείων. Επειδή δεν υπάρχει πακέτο με το ίδιο όνομα, ξεκινά η λήψη από το αποθετήριο του Docker. Στη συνέχεια, το δαίμονα εκκινεί το τροποποιημένο πρόγραμμα cowsay. Εάν η διαδικασία ολοκληρωθεί, το κοντέινερ τερματίζεται αυτόματα.
Όπως και το cowsay, το whalesay του Docker προσφέρει επίσης τη δυνατότητα να παρεμβαίνεις στη ροή του προγράμματος για να επηρεάσεις το κείμενο που εμφανίζεται στο τερματικό. Δοκίμασε αυτή τη λειτουργία αντικαθιστώντας το «boo» στην εντολή εξόδου με οποιαδήποτε συμβολοσειρά ή, για παράδειγμα, με ένα αστείο για φάλαινες.
sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?bash
Εμφάνιση όλων των εικόνων Docker στο τοπικό σύστημα
Αν δεν είστε σίγουροι αν έχετε ήδη κατεβάσει μια συγκεκριμένη εικόνα, μπορείτε να δείτε μια συνολική εικόνα όλων των εικόνων που υπάρχουν στον τοπικό σας υπολογιστή. Χρησιμοποιήστε την ακόλουθη εντολή γραμμής εντολών:
sudo docker imagebashΗ εντολή docker images (εναλλακτικά docker image ls) εμφανίζει όλες τις τοπικές εικόνες, συμπεριλαμβανομένου του μεγέθους του αρχείου, της ετικέτας και του αναγνωριστικού της εικόνας.

Όταν εκκινείτε ένα κοντέινερ, η αντίστοιχη εικόνα κατεβαίνει ως αντίγραφο από το αποθετήριο και αποθηκεύεται μόνιμα στον υπολογιστή σας. Αυτό σας εξοικονομεί χρόνο αν θελήσετε να χρησιμοποιήσετε την εικόνα αργότερα. Νέα λήψη ξεκινά μόνο αν αλλάξει η πηγή της εικόνας, για παράδειγμα αν μια νεότερη έκδοση είναι διαθέσιμη στο αποθετήριο.
Εμφάνιση όλων των κοντέινερ στο τοπικό σύστημα
Αν θέλετε να εμφανίσετε μια συνοπτική παρουσίαση όλων των κοντέινερ που εκτελούνται στο σύστημά σας ή έχουν εκτελεστεί στο παρελθόν, χρησιμοποιήστε την εντολή docker ps σε συνδυασμό με την επιλογή --all (συντομογραφία: -a):
sudo docker ps -abash
Η έξοδος του τερματικού περιλαμβάνει πληροφορίες όπως το αναγνωριστικό του εκάστοτε κοντέινερ, την υποκείμενη εικόνα, την εντολή που εκτελέστηκε κατά την εκκίνηση του κοντέινερ, την ώρα εκκίνησης του κοντέινερ και την κατάστασή του.
Αν θέλετε να εμφανίσετε μόνο τα κοντέινερ που εκτελούνται αυτή τη στιγμή στο σύστημά σας, χρησιμοποιήστε την εντολή docker ps χωρίς άλλες επιλογές:
sudo docker psbashΠρος το παρόν, όμως, δεν θα πρέπει να υπάρχουν ενεργά κοντέινερ στο σύστημά σας.
Δημιουργία εικόνων Docker
Όχι ότι το σεμινάριό μας για το Docker δεν σας έχει δείξει πώς να βρίσκετε εικόνες στο Docker Hub, να τις κατεβάζετε και να τις εκτελείτε σε οποιοδήποτε σύστημα στο οποίο είναι εγκατεστημένος ο κινητήρας Docker. Ωστόσο, με το Docker, δεν θα έχετε μόνο πρόσβαση στο ευρύ φάσμα εφαρμογών που διατίθενται στο μητρώο. Η πλατφόρμα προσφέρει επίσης μια μεγάλη ποικιλία επιλογών για τη δημιουργία δικών σας εικόνων και την κοινή χρήση τους με άλλους προγραμματιστές.
Στα εισαγωγικά κεφάλαια αυτού του σεμιναρίου για το Docker, μάθατε ήδη ότι κάθε εικόνα Docker βασίζεται σε ένα αρχείο Dockerfile. Μπορείτε να φανταστείτε τα αρχεία Dockerfile ως ένα είδος προτύπου δημιουργίας για τις εικόνες. Πρόκειται για απλά αρχεία κειμένου που περιέχουν όλες τις οδηγίες που χρειάζεται το Docker για να δημιουργήσει μια εικόνα. Στα επόμενα βήματα, θα μάθετε πώς να συντάσσετε αυτό το είδος αρχείου Dockerfile και να δίνετε εντολή στο Docker να το χρησιμοποιήσει ως βάση για τη δική σας εικόνα.
- Δημιουργία νέου φακέλου: Η ομάδα προγραμματιστών του Docker συνιστά τη δημιουργία ενός νέου φακέλου για κάθε Dockerfile. Στο Linux, οι φάκελοι δημιουργούνται εύκολα από το τερματικό. Χρησιμοποιήστε την ακόλουθη εντολή για να δημιουργήσετε έναν φάκελο με το όνομα mydockerbuild:
mkdir mydockerbuildbash
- Πλοηγηθείτε στον νέο κατάλογο: Χρησιμοποιήστε την εντολή
cdγια να πλοηγηθείτε στον κατάλογο εργασίας που μόλις δημιουργήσατε.
cd mydockerbuildbash
- Δημιουργία νέου αρχείου κειμένου: Μπορείτε επίσης να δημιουργήσετε εύκολα αρχεία κειμένου μέσω του τερματικού στο Ubuntu. Για να το κάνετε αυτό, χρησιμοποιήστε έναν επεξεργαστή κειμένου όπως το Nano ή το Vim. Δημιουργήστε ένα αρχείο κειμένου με το όνομα Dockerfile στον κατάλογο mydockerbuild.
nano Dockerfilebash
- Δημιουργία του αρχείου Dockerfile: Το αρχείο κειμένου που μόλις δημιουργήσατε λειτουργεί ως σχέδιο κατασκευής για την εικόνα που αναπτύσσετε μόνοι σας. Αντί να προγραμματίσουμε την εικόνα από το μηδέν, σε αυτό το σεμινάριο για το Docker θα χρησιμοποιήσουμε την εικόνα επίδειξης docker/whalesay ως πρότυπο. Η ενσωμάτωσή της γίνεται με την εντολή FROM στο αρχείο Dockerfile σας. Χρησιμοποιήστε την ετικέτα :latest για να αναφερθείτε στην πιο πρόσφατη έκδοση της εικόνας.
FROM docker/whalesay:latestΜέχρι στιγμής, το docker/whalesay λειτουργεί με τον τρόπο που εσύ του δίνεις τα λόγια. Στο τερματικό, εμφανίζεται ακριβώς το κείμενο που πληκτρολόγησες, σε συνδυασμό με την εντολή εκκίνησης του κοντέινερ. Ωστόσο, θα ήταν πιο ενδιαφέρον αν το σενάριο δημιουργούσε αυτόματα νέο κείμενο εξόδου. Αυτό μπορεί να γίνει, για παράδειγμα, χρησιμοποιώντας το πρόγραμμα fortunes που είναι διαθέσιμο σε κάθε σύστημα Linux. Η βασική λειτουργία του fortunes είναι να δημιουργεί ρήσεις από μπισκότα τύχης και χιουμοριστικούς αφορισμούς. Χρησιμοποιήστε την ακόλουθη εντολή για να ενημερώσετε τον τρέχοντα τοπικό κατάλογο πακέτων και να εγκαταστήσετε το fortunes:
RUN apt-get -y update && apt-get install -y fortunesΣτη συνέχεια, ορίστε μια εντολή CMD. Αυτή εκτελείται μετά την εντολή RUN, εκτός αν έχει αντικατασταθεί από την εντολή call (docker run image CMD). Χρησιμοποιήστε την ακόλουθη εντολή για να εκτελέσετε το πρόγραμμα fortunes με την επιλογή -a («Επιλογή από όλες τις βάσεις δεδομένων») και να εμφανίσετε το αποτέλεσμα μέσω του προγράμματος cowsay στο τερματικό:
CMD /usr/games/fortune -a | cowsayΤο αρχείο Dockerfile σας θα πρέπει να έχει την ακόλουθη μορφή:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsayΣημείωση: Οι εντολές σε ένα αρχείο Dockerfile γράφονται πάντα με μονή διαστήματα και ξεκινούν πάντα με μια λέξη-κλειδί. Η σύνταξη δεν διακρίνει μεταξύ κεφαλαίων και μικρών γραμμάτων, οπότε δεν έχει σημασία αν γράφετε με κεφαλαία ή μικρά γράμματα. Ωστόσο, έχει καθιερωθεί μια σταθερή χρήση κεφαλαίων για τις λέξεις-κλειδιά.

- Αποθήκευση αρχείου κειμένου: Αποθηκεύστε την καταχώρισή σας. Εάν χρησιμοποιείτε τον επεξεργαστή Nano, αποθηκεύστε με το συνδυασμό πλήκτρων [CTRL] + [O] και επιβεβαιώστε με το [ENTER]. Το Nano θα εμφανίσει ένα μήνυμα ότι έχουν γραφτεί τρεις γραμμές στο επιλεγμένο αρχείο. Κλείστε τον επεξεργαστή κειμένου με το συνδυασμό πλήκτρων [CTRL] + [X].
- Δημιουργία εικόνας ως Dockerfile: Για να δημιουργήσετε μια εικόνα από ένα Dockerfile, μεταβείτε πρώτα στον κατάλογο όπου βρίσκεται το αρχείο κειμένου. Ξεκινήστε τη δημιουργία της εικόνας με την εντολή
docker build. Εάν θέλετε να ονομάσετε ξεχωριστά την εικόνα ή να της δώσετε μια ετικέτα, χρησιμοποιήστε την επιλογή-tακολουθούμενη από τον επιθυμητό συνδυασμό ετικέτας και ονόματος. Η τυπική μορφή είναιname:tag.
Στο παρόν παράδειγμα, θα πρέπει να δημιουργηθεί μια εικόνα με το όνομα docker-whale:
docker build -t docker-whale .bashΗ τελευταία περίοδος υποδηλώνει ότι το σχετικό αρχείο Dockerfile βρίσκεται στον επιλεγμένο κατάλογο. Έχετε επίσης τη δυνατότητα να καθορίσετε μια διαδρομή αρχείου ή μια διεύθυνση URL για τα αρχεία προέλευσης.
Η διαδικασία δημιουργίας ξεκινά αμέσως μόλις επιβεβαιωθεί η εντολή με το πλήκτρο [ENTER]. Αρχικά, το δαίμονα του Docker ελέγχει αν διαθέτει όλα τα αρχεία που χρειάζεται για τη δημιουργία της εικόνας. Στην ορολογία του Docker, αυτό συνοψίζεται στον όρο «context».
Στη συνέχεια, εντοπίζεται η εικόνα docker/whalesay με την ετικέτα :latest:
Εάν το απαιτούμενο περιβάλλον για τη δημιουργία της εικόνας υπάρχει ήδη στο σύνολό του, τότε το δαίμονα του Docker εκκινεί την εικόνα-πρότυπο που έχει προσδιοριστεί μέσω της εντολής FROM σε ένα προσωρινό κοντέινερ και προχωρά στην επόμενη εντολή στο Dockerfile. Στο παρόν παράδειγμα, αυτή είναι η εντολή RUN, η οποία προκαλεί την εγκατάσταση του προγράμματος fortunes.
Στο τέλος κάθε βήματος της διαδικασίας δημιουργίας εικόνας, το Docker σας παρέχει ένα αναγνωριστικό για το αντίστοιχο επίπεδο που δημιουργήθηκε σε αυτό το βήμα. Αυτό σημαίνει ότι κάθε γραμμή στο υποκείμενο αρχείο Dockerfile αντιστοιχεί σε ένα επίπεδο της εικόνας που δημιουργήθηκε με βάση αυτό.
Όταν ολοκληρωθεί η εντολή RUN, το δαίμονα του Docker τερματίζει το κοντέινερ που δημιουργήθηκε για αυτήν, το διαγράφει και ξεκινά ένα νέο προσωρινό κοντέινερ για το επίπεδο της εντολής CMD. Στο τέλος της διαδικασίας δημιουργίας, αυτό το προσωρινό κοντέινερ τερματίζεται και διαγράφεται επίσης. Το Docker σας παρέχει το αναγνωριστικό της νέας εικόνας:
Successfully built a8f2048c9ab8
Η εικόνα που μόλις δημιουργήσατε βρίσκεται με το όνομα docker-whale στη λίστα των εικόνων που έχετε αποθηκεύσει τοπικά.
sudo docker imagesbash
Για να ξεκινήσετε ένα κοντέινερ από την εικόνα που μόλις δημιουργήσατε, χρησιμοποιήστε την εντολή sudo docker run σε συνδυασμό με το όνομα της εικόνας:
sudo docker run docker-whalebashΕάν η εικόνα δημιουργήθηκε σωστά από το Dockerfile, η φάλαινά σας θα πρέπει τώρα να σας εμπνέει με λόγια περισσότερο ή λιγότερο σοφά. Σημείωση: Κάθε φορά που επανεκκινείτε το κοντέινερ, δημιουργείται μια νέα φράση.

Προσθέστε ετικέτες στις εικόνες Docker και ανεβάστε τις στο Docker Hub
Αν θέλετε να ανεβάσετε την προσαρμοσμένη εικόνα docker-whale σας στο hub και να την διαθέσετε είτε στην κοινότητα είτε σε μια ομάδα εργασίας, πρέπει πρώτα να τη συνδέσετε με ένα αποθετήριο με το ίδιο όνομα στον προσωπικό σας χώρο ονομάτων. Στην ορολογία του Docker, αυτό το βήμα ονομάζεται «tagging».
Για να δημοσιεύσετε μια εικόνα στο Docker Hub, ακολουθήστε τα παρακάτω βήματα:
- Δημιουργήστε ένα αποθετήριο: Συνδεθείτε στο Docker Hub χρησιμοποιώντας το Docker ID και τον προσωπικό σας κωδικό πρόσβασης και δημιουργήστε ένα δημόσιο αποθετήριο με το όνομα docker-whale.

- Προσδιορίστε το αναγνωριστικό της εικόνας: Προσδιορίστε το αναγνωριστικό της προσαρμοσμένης εικόνας σας docker-whale χρησιμοποιώντας την εντολή
docker images.

Στην περίπτωσή μας, το αναγνωριστικό της εικόνας είναι a8f2048c9ab8. Το χρειαζόμαστε για την προσθήκη ετικετών στο επόμενο βήμα.
- Προσθέστε ετικέτα στην εικόνα: Προσθέστε ετικέτα στην εικόνα docker-whale χρησιμοποιώντας το πρόγραμμα γραμμής εντολών
docker tagσύμφωνα με τα παρακάτω:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]bashΣτο συγκεκριμένο παράδειγμα, η οδηγία της γραμμής εντολών για την προσθήκη ετικετών έχει ως εξής:
sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latestbashΜπορείτε να ελέγξετε αν έχετε προσθέσει σωστά την ετικέτα στην εικόνα σας χρησιμοποιώντας τη συνοπτική προβολή docker images. Το όνομα του αποθετηρίου θα πρέπει πλέον να περιλαμβάνει το Docker ID σας.

- Ανεβάστε την εικόνα: Για να ανεβάσετε την εικόνα, πρέπει πρώτα να συνδεθείτε στο Docker Hub. Αυτό μπορεί να γίνει χρησιμοποιώντας την εντολή
docker login.
sudo docker loginbashΣτη συνέχεια, το τερματικό θα σας ζητήσει να εισαγάγετε το όνομα χρήστη (Docker ID) και τον κωδικό πρόσβασής σας.

Εάν η σύνδεση ήταν επιτυχής, χρησιμοποιήστε την εντολή docker push για να ανεβάσετε την εικόνα σας στο αποθετήριο που μόλις δημιουργήθηκε.
sudo docker push [Namespace]/docker-whalebashΗ διαδικασία μεταφόρτωσης θα διαρκέσει μόνο λίγα δευτερόλεπτα. Η τρέχουσα κατάσταση εμφανίζεται στο τερματικό.

Συνδεθείτε στο Docker Hub μέσω του προγράμματος περιήγησης για να δείτε την εικόνα που ανεβάσατε.
![Docker hub: The repository [Namespace]/docker-whale in the detailed view Image: Docker hub: The repository [Namespace]/docker-whale in the detailed view](https://www.ionos.com/el-gr/digitalguide/fileadmin/_processed_/5/e/csm_docker-hub-push-result_56530d8ebc.webp)
Αν θέλετε να ανεβάσετε περισσότερες από μία εικόνες ανά αποθετήριο, χρησιμοποιήστε διαφορετικές ετικέτες για να προσφέρετε τις εικόνες σας σε διαφορετικές εκδόσεις. Για παράδειγμα:
[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2Μια επισκόπηση των διαφόρων εκδόσεων εικόνων βρίσκεται στο αποθετήριο του Docker Hub, στην καρτέλα «Ετικέτες».

Ωστόσο, οι εικόνες των διαφόρων έργων θα πρέπει να διατίθενται σε ξεχωριστά αποθετήρια.
Εάν η μεταφόρτωση ολοκληρώθηκε με επιτυχία, η προσαρμοσμένη εικόνα σας θα είναι πλέον διαθέσιμη στο δημόσιο αποθετήριο για όλους τους χρήστες του Docker σε όλο τον κόσμο.
- Δοκιμαστική εκτέλεση: Ελέγξτε αν η μεταφόρτωση ολοκληρώθηκε με επιτυχία, προσπαθώντας να κατεβάσετε την εικόνα.
Σημειώστε ότι πρέπει πρώτα να διαγραφεί η τοπική έκδοση της εικόνας, προκειμένου να κατεβάσετε ένα νέο αντίγραφο με την ίδια ετικέτα. Διαφορετικά, το Docker θα αναφέρει ότι η επιθυμητή εικόνα υπάρχει ήδη στην τρέχουσα έκδοση.

Για να διαγράψετε την τοπική εικόνα Docker, χρησιμοποιήστε την εντολή docker rmi σε συνδυασμό με τον αντίστοιχο αναγνωριστικό της εικόνας. Αυτός προσδιορίζεται, όπως συνήθως, μέσω docker images. Εάν το Docker αναφέρει σύγκρουση, π.χ. επειδή ένα αναγνωριστικό εικόνας χρησιμοποιείται σε πολλά αποθετήρια ή σε κάποιο κοντέινερ, επαναλάβετε την εντολή σας με την επιλογή --force (-f για συντομία) για να επιβάλετε τη διαγραφή.
sudo docker rmi -f a8f2048c9ab8bash
Εμφάνιση ξανά της συνολικής εικόνας όλων των τοπικών εικόνων:
sudo docker ImagesbashΤα στοιχεία που διαγράφηκαν δεν θα πρέπει πλέον να εμφανίζονται στην έξοδο του τερματικού. Τώρα χρησιμοποιήστε την εντολή pull που παρέχεται στο αποθετήριο για να κατεβάσετε ένα νέο αντίγραφο της εικόνας από το Docker Hub.
sudo docker pull [Namespace]/docker-whalebash
Πρόσθετα θέματα και σεμινάρια για το Docker
Ο κόσμος του Docker είναι ευρύς και, με την πάροδο του χρόνου, έχει αναπτυχθεί ένα ζωντανό οικοσύστημα γύρω από τα εργαλεία του Docker. Το Docker είναι ιδιαίτερα χρήσιμο για τους διαχειριστές, ειδικά όταν διαχειρίζονται σύνθετες εφαρμογές με πολλά containers που λειτουργούν παράλληλα σε διαφορετικά συστήματα. Το Docker προσφέρει ποικίλες λειτουργίες για τον συντονισμό τέτοιων clusters. Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτό στο άρθρο μας για τον συντονισμό του Docker με τα Swarm και Compose.
Ο Ψηφιακός Οδηγός περιλαμβάνει επιπλέον εκπαιδευτικά βίντεο για τη χρήση του Docker:
- Δημιουργία αποθετηρίου Docker
- Τόμοι κοντέινερ Docker
- Docker: Δημιουργία αντιγράφων ασφαλείας και επαναφορά
- Εγκατάσταση και εκτέλεση του Docker σε διακομιστή Linux
- Εκπαιδευτικό σεμινάριο για το Docker Compose
Το Docker είναι κατάλληλο για διάφορες περιπτώσεις χρήσης. Στον Ψηφιακό Οδηγό θα βρείτε τα ακόλουθα σεμινάρια:
- Εγκατάσταση του WordPress σε κοντέινερ Docker
- Εκτέλεση VPN σε κοντέινερ Docker χρησιμοποιώντας το SoftEther
- Εγκατάσταση Nextcloud με Docker
- Εγκατάσταση του Portainer στο Docker
- Redis σε κοντέινερ Docker
- Διακομιστής Valheim Docker
Το Docker δεν είναι πάντα η καλύτερη επιλογή για κάθε εφαρμογή. Σε ένα από τα άρθρα μας παρουσιάζονται οι πιο δημοφιλείς εναλλακτικές λύσεις του Docker. Επιπλέον, διαθέτουμε πολλά άρθρα που συγκρίνουν το Docker με άλλες πλατφόρμες:
- Kubernetes έναντι Docker
- Openshift έναντι Docker
- Podman έναντι Docker