Docker Tutorial για αρχάριους: Βασικά, Architecture, Containers

⚡ Έξυπνη Σύνοψη

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

  • 🐳 Εμπορευματοκιβώτια: Το Docker εικονικοποιεί σε επίπεδο λειτουργικού συστήματος, επομένως τα κοντέινερ μοιράζονται τον πυρήνα του κεντρικού υπολογιστή και χρησιμοποιούν λιγότερους πόρους από τις εικονικές μηχανές.
  • 🧱 Archiδομή: Η μηχανή Docker (dockerd), οι εικόνες, τα μητρώα και τα κοντέινερ αποτελούν την αρχιτεκτονική client-server πίσω από κάθε ροή εργασίας Docker.
  • 📦 Εικόνες και κοντέινερ: Μια εικόνα είναι ένα πρότυπο μόνο για ανάγνωση, ενώ ένα κοντέινερ είναι ένα αντίγραφο που εκτελείται και μία εικόνα μπορεί να ξεκινήσει πολλά κοντέινερ.
  • 🗄️ Μητρώα: Το Docker Hub αποθηκεύει δημόσιες και ιδιωτικές εικόνες, παρέχοντάς σας εκατομμύρια έτοιμες προς χρήση εικόνες για λήψη και εκτέλεση.
  • ⚙️ Εγκατάσταση: On Ubuntu Προσθέτετε το αποθετήριο Docker APT και το κλειδί GPG και, στη συνέχεια, εγκαθιστάτε το πακέτο docker-ce με την εντολή apt-get.
  • ️ Βασικές εντολές: Διαχειριστείτε κοντέινερ με docker pull, run, start, stop, ps, stats και images από τη γραμμή εντολών.

Εκπαιδευτικό σεμινάριο Docker για αρχάριους που καλύπτει την αρχιτεκτονική και την εγκατάσταση σε Ubuntuκαι βασικές εντολές κοντέινερ

Το Docker είναι μια από τις πιο δημοφιλείς πλατφόρμες containerization που χρησιμοποιούνται στη σύγχρονη DevOps και ροές εργασίας cloud. Αυτό το σεμινάριο Docker για αρχάριους εξηγεί τι είναι το Docker, πώς λειτουργεί η αρχιτεκτονική Docker, πώς να εγκαταστήσετε το Docker σε Ubuntuκαι τις βασικές εντολές που χρησιμοποιούνται για τη διαχείριση εικόνων και κοντέινερ.

Τι είναι το Docker;

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

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

Εικονικοποίηση στο Docker vs Hypervisor
Εικονικοποίηση στο Docker vs Hypervisor

Σε αντίθεση με τις εικονικές μηχανές (VM), οι οποίες μπορούν να επικοινωνούν απευθείας με το υλικό του κεντρικού υπολογιστή (για παράδειγμα, έναν προσαρμογέα Ethernet που δημιουργεί περισσότερους εικονικούς προσαρμογείς), τα κοντέινερ Docker εκτελούνται σε ένα απομονωμένο περιβάλλον πάνω από το λειτουργικό σύστημα του κεντρικού υπολογιστή. Ακόμα κι αν ο κεντρικός υπολογιστής σας εκτελείται Windows, μπορείτε να τρέξετε Linux εικόνες μέσα σε κοντέινερ με τη βοήθεια Hyper-V, το οποίο δημιουργεί αυτόματα μια μικρή εικονική μηχανή για την εικονικοποίηση της βασικής εικόνας.

Τώρα που ξέρετε τι είναι το Docker, ας δούμε τους κύριους λόγους για τους οποίους οι ομάδες το επιλέγουν.

Γιατί να χρησιμοποιήσετε το Docker;

Ακολουθούν οι βασικοί λόγοι για να χρησιμοποιήσετε το Docker:

  • Το Docker είναι λογισμικό που χρησιμοποιείται για εικονικοποίηση, επιτρέποντας πολλαπλές λειτουργικά συστήματα να εκτελείται στον ίδιο κεντρικό υπολογιστή.
  • Το Docker είναι μια εφαρμογή πελάτη-διακομιστή, που σημαίνει ότι οι πελάτες επικοινωνούν με έναν διακομιστή.
  • Οι εικόνες Docker λειτουργούν ως ο «πηγαίος κώδικας» για τα κοντέινερ. Τις χρησιμοποιείτε για να δημιουργήσετε.
  • Το Docker υποστηρίζει δύο τύπους μητρώων: δημόσια και ιδιωτικά.
  • Τα κοντέινερ είναι οι οργανωτικές μονάδες του Docker. Με απλά λόγια, μια εικόνα είναι ένα πρότυπο και ένα κοντέινερ είναι ένα αντίγραφο αυτού του προτύπου, επομένως μπορείτε να εκτελέσετε πολλά κοντέινερ από την ίδια εικόνα.

Αυτά τα οφέλη προέρχονται από τον τρόπο που έχει σχεδιαστεί το Docker. Η ακόλουθη ενότητα αναλύει την αρχιτεκτονική Docker και τα βασικά στοιχεία της.

Λιμενεργάτης Archiδομή

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

Λιμενεργάτης Archiστοιχεία δομής: μηχανή, εικόνες, μητρώα και κοντέινερ

Λιμενεργάτης Archiδομή

Docker Engine

Το Docker είναι μια εφαρμογή client-server, που σημαίνει ότι έχουμε clients που αναμεταδίδουν αιτήματα σε έναν server. Το daemon Docker, που ονομάζεται dockerd, είναι η μηχανή Docker που αντιπροσωπεύει τον server. Το daemon και οι clients μπορούν να εκτελούνται στον ίδιο ή σε έναν απομακρυσμένο κεντρικό υπολογιστή και επικοινωνούν μέσω ενός δυαδικού αρχείου client γραμμής εντολών και ενός πλήρους αρχείου. RESTful API που αλληλεπιδρά με το dockerd.

Εικόνες Docker

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

Μητρώα Docker

Το Docker αποθηκεύει τις εικόνες που δημιουργούμε σε μητρώα. Υπάρχουν δημόσια και ιδιωτικά μητρώα. Το Docker έχει ένα δημόσιο μητρώο που ονομάζεται Docker hub, όπου μπορείτε επίσης να αποθηκεύσετε εικόνες ιδιωτικά. Το Docker Hub διαθέτει εκατομμύρια εικόνες που μπορείτε να αρχίσετε να χρησιμοποιείτε αμέσως.

Docker Containers

Τα κοντέινερ είναι οι οργανωτικές μονάδες του Docker και μία από τις βασικές του έννοιες. Όταν δημιουργούμε μια εικόνα και την εκτελούμε, την εκτελούμε μέσα σε ένα κοντέινερ. Η αναλογία με το κοντέινερ χρησιμοποιείται λόγω της φορητότητας του λογισμικού που εκτελείται μέσα σε αυτήν: μπορείτε να το μετακινήσετε, να το "αποστείλετε", να το τροποποιήσετε, να το διαχειριστείτε, να το δημιουργήσετε ή να το καταστρέψετε, ακριβώς όπως τα φορτηγά πλοία χειρίζονται πραγματικά κοντέινερ.

Με απλά λόγια, μια εικόνα είναι ένα πρότυπο και ένα κοντέινερ είναι ένα αντίγραφο αυτού του προτύπου. Μπορείτε να έχετε πολλά κοντέινερ (αντίγραφα) της ίδιας εικόνας.

Η αλληλεπίδραση μεταξύ αυτών των διαφορετικών στοιχείων δείχνει πώς λειτουργεί η τεχνολογία κοντέινερ Docker. Εντολές όπως το docker pull και το docker run, τις οποίες θα καλύψουμε αργότερα, σας επιτρέπουν να διαχειριστείτε αυτήν τη ροή εργασίας.

Έχοντας κατά νου την αρχιτεκτονική, ας εγκαταστήσουμε το Docker ώστε να μπορείτε να δοκιμάσετε αυτά τα στοιχεία μόνοι σας.

Πώς να εγκαταστήσετε το Docker σε Linux/Ubuntu

Παρακάτω ακολουθεί μια βήμα προς βήμα διαδικασία εγκατάστασης του Docker σε Linux/Ubuntu:

Βήμα 1) Για να εγκαταστήσετε το Docker, χρειάζεστε τα πακέτα DEB της ομάδας Docker. Πρώτα, ορισμένες προϋποθέσεις Ubuntu Απαιτούνται πακέτα. Χρησιμοποιήστε την παρακάτω εντολή για να τα εγκαταστήσετε.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*το σύμβολο "\" δεν είναι απαραίτητο, χρησιμοποιείται για τη νέα γραμμή, αν θέλετε μπορείτε να γράψετε την εντολή χωρίς να χρησιμοποιήσετε το "\" σε μία μόνο γραμμή.

Βήμα 2) Προσθέστε το επίσημο κλειδί Docker GPG με το δακτυλικό αποτύπωμα. Χρησιμοποιήστε την παρακάτω εντολή Docker για να εισαγάγετε το κλειδί GPG.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Βήμα 3) Στη συνέχεια, προσθέστε το αποθετήριο Docker APT χρησιμοποιώντας την παρακάτω εντολή.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Ενδέχεται να σας ζητηθεί να επιβεβαιώσετε ότι επιθυμείτε να προσθέσετε το αποθετήριο και να προστεθεί αυτόματα το κλειδί GPG στον κεντρικό υπολογιστή σας. Η εντολή lsb_release θα πρέπει να συμπληρώσει το Ubuntu έκδοση διανομής του κεντρικού υπολογιστή σας.

Βήμα 4) Αφού προσθέσετε το κλειδί GPG, ενημερώστε τις πηγές APT χρησιμοποιώντας την παρακάτω εντολή Docker.

$ sudo apt-get update

Τώρα μπορείτε να εγκαταστήσετε το ίδιο το πακέτο Docker.

Βήμα 5) Μόλις ενημερωθούν οι πηγές APT, ξεκινήστε την εγκατάσταση των πακέτων Docker στο Ubuntu χρησιμοποιώντας την παρακάτω εντολή Docker.

$ sudo apt-get install docker-ce

Η παραπάνω εντολή εγκαθιστά το Docker και άλλα απαιτούμενα πακέτα. Πριν από το Docker 1.8.0, το όνομα του πακέτου ήταν lxc-docker, και μεταξύ του Docker 1.8 και 1.13, το όνομα του πακέτου ήταν docker-engine.

ΣΗΜΕΊΩΣΗ: Docker για Windows Απαιτεί Windows 10 Pro ή Enterprise έκδοση 14393 ή Windows Server 2016 RTM, για εκτέλεση.

Πώς να χρησιμοποιήσετε το Docker χρησιμοποιώντας βασικές εντολές Docker

Δείτε πώς μπορείτε να χρησιμοποιήσετε το Docker με μερικές βασικές εντολές του Docker.

Η πιο βασική εντολή που πρέπει να εκτελέσετε μετά την εγκατάσταση του Docker είναι η docker info, όπως αναφέρθηκε προηγουμένως.

$ sudo docker info

Θα πρέπει να λάβετε ένα αποτέλεσμα παρόμοιο με το ακόλουθο.

Χρησιμοποιήστε το Docker χρησιμοποιώντας βασικές εντολές Docker, εμφανίζοντας την έξοδο πληροφοριών docker

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

$ sudo docker pull alpine

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

*Το alpine είναι μια ελάχιστη εικόνα Docker που βασίζεται στο Alpine Linux με πλήρες ευρετήριο πακέτων και μέγεθος μόνο 5 MB.

Αν θέλουμε να εκτελέσουμε την εικόνα ως κοντέινερ, χρησιμοποιούμε την ακόλουθη εντολή.

$ sudo docker run -i -t alpine /bin/bash

Η εκτέλεση της εντολής μας στέλνει απευθείας στο τερματικό alpine. Η σημαία -i διατηρεί το STDIN ανοιχτό από το κοντέινερ ακόμα και όταν δεν είστε συνδεδεμένοι σε αυτό. Αυτή η μόνιμη τυπική είσοδος είναι το μισό από αυτό που χρειάζεστε για ένα διαδραστικό κέλυφος. Η σημαία -t είναι το άλλο μισό και δίνει εντολή στο Docker να αντιστοιχίσει ένα ψευδο-tty στο κοντέινερ. Μαζί μας δίνουν ένα διαδραστικό κέλυφος στο νέο κοντέινερ. Βγαίνουμε από το κοντέινερ με μια απλή εντολή εξόδου.

Τώρα, σε αυτό το βασικό σεμινάριο του Docker, μπορούμε να δοκιμάσουμε να εκτελέσουμε ένα Ubuntu εικόνα.

$ sudo docker run -it ubuntu /bin/bash

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

$ sudo docker run –-name our_container -it ubuntu /bin/bash

Στη συνέχεια, βγαίνουμε ξανά από το περιβάλλον. Μπορούμε επίσης να εκτελέσουμε ένα κοντέινερ που δημιουργήσαμε προηγουμένως χωρίς διαδραστικό κέλυφος.

$ sudo docker start container_name

Και σταματάμε το κοντέινερ γράφοντας docker stop container_name.

$ sudo docker stop container_name

Αν θέλουμε να δούμε όλα τα κοντέινερ που εκτελούνται, απλώς εκτελούμε τα εξής.

$ docker ps

Για όλα τα κοντέινερ, προσθέτουμε "-a" στο τέλος της ίδιας εντολής, όπως στο docker ps -a. Αυτή η εντολή εμφανίζει το ID του κοντέινερ, ποια εικόνα χρησιμοποιεί, πότε δημιουργήθηκε, την κατάσταση εκτέλεσής του, τις εκτεθειμένες θύρες και ένα τυχαία δημιουργημένο όνομα για ευκολότερη διαχείριση.

Όταν εκτελούμε κοντέινερ, συχνά θέλουμε να γνωρίζουμε πόσους πόρους χρησιμοποιούν. Για τον σκοπό αυτό, μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή.

$ docker stats

Μπορείτε επίσης να δείτε ποιες εικόνες έχετε κατεβάσει τοπικά, μαζί με πληροφορίες σχετικά με αυτές.

$ sudo docker images

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

Για να κατανοήσουμε γιατί τα κοντέινερ αποτελούν μια τέτοια βελτίωση, βοηθάει να εξετάσουμε πώς εξελίχθηκε η εικονικοποίηση.

Τι είναι η εικονικοποίηση;

Παλαιότερα, η ανάπτυξη μιας υπηρεσίας ήταν αργή και επίπονη. Οι προγραμματιστές έγραφαν κώδικα και στη συνέχεια η ομάδα λειτουργιών τον ανέπτυσσε σε μηχανήματα bare-metal, όπου έπρεπε να προσέχουν για εκδόσεις βιβλιοθηκών, ενημερώσεις κώδικα και μεταγλωττιστές γλώσσας, ώστε ο κώδικας να λειτουργεί. Εάν υπήρχαν σφάλματα ή σφάλματα, η διαδικασία ξεκινούσε από την αρχή: οι προγραμματιστές διόρθωναν το πρόβλημα και η ομάδα λειτουργιών αναλάμβανε την ανάπτυξη.

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

Η δημοτικότητα του Docker οφείλεται επίσης σε εργαλεία ενορχήστρωσης που διαχειρίζονται κοντέινερ σε κλίμακα, όπως π.χ. KubernetesΠριν προχωρήσουμε, ακολουθεί μια σύντομη αναφορά στις πιο σημαντικές εντολές του Docker.

Σημαντικές εντολές Docker

Ακολουθούν οι σημαντικές εντολές Docker:

εντολή Περιγραφή
πληροφορίες αποβάθρας Εντολή Πληροφοριών
λιμνοδεξαμενής-τραβήγματος Κατεβάστε μια εικόνα
docker run -i -t image_name /bin/bash Εκτελέστε την εικόνα ως κοντέινερ
docker start our_container Έναρξη δοχείου
docker stop container_name Σταματήστε το δοχείο
docker ps Λίστα όλων των κοντέινερ που εκτελούνται
στατιστικά αποβάθρας Πληροφορίες κοντέινερ
εικόνες docker Λίστα εικόνων που λήφθηκαν
Εκκαθάριση Docker Σκοτώστε όλα τα δοχεία που τρέχουν.

Επίσης, διαβάστε αυτά Ερωτήσεις και απαντήσεις για συνέντευξη εργασίας Docker για νέους αλλά και έμπειρους επαγγελματίες.

Συχνές Ερωτήσεις

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

Ένα Dockerfile είναι ένα σενάριο απλού κειμένου που περιέχει οδηγίες όπως FROM, RUN, COPY και CMD. Το Docker διαβάζει αυτές τις οδηγίες για να δημιουργήσει αυτόματα μια εικόνα. Κάθε γραμμή προσθέτει ένα επίπεδο, επιτρέποντάς σας να αναπαράγετε το ίδιο περιβάλλον σε οποιοδήποτε μηχάνημα.

Το Docker Compose ορίζει και εκτελεί εφαρμογές πολλαπλών κοντέινερ χρησιμοποιώντας ένα μόνο αρχείο YAML. Περιγράφετε κάθε υπηρεσία, δίκτυο και τόμο μία φορά και, στη συνέχεια, ξεκινάτε τα πάντα με την εντολή docker compose up. Είναι ιδανικό για τοπική ανάπτυξη και δοκιμή συνδεδεμένων υπηρεσιών.

Το Docker δημιουργεί και εκτελεί μεμονωμένα κοντέινερ, ενώ Kubernetes Ενορχηστρώνει πολλά κοντέινερ σε ένα σύμπλεγμα. Το Kubernetes προσθέτει αυτόματη κλιμάκωση, αυτοεπιδιόρθωση και εξισορρόπηση φορτίου. Στην πράξη, το Docker συσκευάζει την εφαρμογή και το Kubernetes τη διαχειρίζεται στην παραγωγή.

Το Docker Engine είναι δωρεάν και ανοιχτού κώδικα με άδεια Apache 2.0. Το Docker Desktop είναι δωρεάν για προσωπική χρήση, εκπαίδευση και μικρές επιχειρήσεις, αλλά οι μεγαλύτερες εταιρείες χρειάζονται συνδρομή επί πληρωμή. Το Docker Hub προσφέρει δωρεάν και επί πληρωμή προγράμματα φιλοξενίας εικόνων.

Το Docker τρέχει εγγενώς σε Linux και υποστηρίζεται σε Windows και macOS μέσω του Docker Desktop. Ενεργοποιημένο Windows και Mac, το Docker χρησιμοποιεί μια ελαφριά εικονική μηχανή για να εκτελέσει τον πυρήνα Linux που απαιτούν τα κοντέινερ. Τα περισσότερα είδωλα κοντέινερ βασίζονται σε Linux.

Οι βοηθοί τεχνητής νοημοσύνης δημιουργούν αρχεία Docker, αρχεία σύνθεσης docker και εντολές CLI από εντολές απλής γλώσσας. Επίσης, διαβάζουν αρχεία καταγραφής δημιουργίας και σφάλματα κοντέινερ, εξηγούν την αιτία και προτείνουν διορθώσεις. Να ελέγχετε πάντα τη δημιουργημένη διαμόρφωση για σωστές ετικέτες εικόνας, διαδρομές και ασφάλεια πριν την εκτελέσετε.

Ναί. GitHub Copilot και το ChatGPT μπορεί να συντάξει αρχεία Dockerfiles και Compose από ένα σύντομο σχόλιο ή περιγραφή. Επιταχύνουν τα στερεότυπα, αλλά θα πρέπει να επαληθεύσετε τις βασικές εικόνες, τις εκδόσεις και τις βέλτιστες πρακτικές, επειδή τα δημιουργημένα τμήματα κώδικα ενδέχεται να χρησιμοποιούν παρωχημένες προεπιλογές.

Συνοψίστε αυτήν την ανάρτηση με: