Η χρήση του Docker (Dockerisation) έχει επαναπροσδιορίσει τη διαδικασία ανάπτυξης και αυτοματοποίησης στη βιομηχανία λογισμικού. Από την έναρξή της, η Docker ομάδα προσπαθεί συνεχώς να κάνει την αυτοματοποιημένη ανάπτυξη απρόσκοπτη. Η τεχνολογία containerization δεν επιτρέπει μόνο τη γρήγορη ανάπτυξη εφαρμογών και την αποδοτικότητα, αλλά εξοικονομεί επίσης χρόνο και επίπονες προσπάθειες. Ασυναγώνιστες λειτουργίες όπως η ενορχήστρωση, ο καθορισμός και η εκτέλεση εφαρμογών πολλαπλών κοντέινερ μαζί, καθιστούν το Docker μια αγαπημένη επιλογή για τους προγραμματιστές.
Docker Containers και Images
Καθώς εμβαθύνετε για να κατανοήσετε περαιτέρω το Docker, είναι απαραίτητο να φρεσκάρετε τις βασικές γνώσεις. Η κατανόηση του τρόπου λειτουργίας του Docker μπορεί να είναι δύσκολη αν δεν έχετε εμπειρία εργασίας με αυτό. Σε αυτήν την ενότητα, θα ορίσουμε μερικές έννοιες που είναι απαραίτητες για τους αρχάριους. Εάν πιστεύετε ότι είστε εξοικειωμένοι με αυτές τις έννοιες, μη διστάσετε να τις παρακάμψετε και να προχωρήσετε στην επόμενη ενότητα. Μπορείτε επίσης να ρίξετε μια ματιά στον ολοκληρωμένο οδηγό μας που εξηγεί τις θεμελιώδεις έννοιες του Docker.
-
Docker Images
Τα Docker images είναι μια συλλογή αρχείων μόνο για ανάγνωση. Μόλις δημιουργήσετε Docker images, δεν μπορείτε να τα τροποποιήσετε, αν και επιτρέπεται η διαγραφή τους. Χρησιμοποιούμε ένα Docker image για να δημιουργήσουμε ένα ή περισσότερα Docker containers σύμφωνα με τις ανάγκες μας. Για να ελέγξετε τον αριθμό των εικόνων που εκτελούνται στο σύστημά σας, χρησιμοποιήστε την εντολή:
|
1 |
$docker images |
Όταν κάνετε pull εικόνες από ένα απομακρυσμένο μητρώο (registry) όπως το Docker Hub, κάνετε λήψη αρχείων και φακέλων. Για να κάνετε pull μια εικόνα, χρησιμοποιήστε την εντολή:
|
1 |
$docker pull (όνομα της εικόναςimage) |
-
Docker Containers
Τα Docker images είναι το προσχέδιο (blueprint) των Docker containers. Τεχνικά, ένα Docker container είναι ένα στιγμιότυπο (instance) ενός Docker image. Φανταστείτε, αν ένα Docker image είναι σαν γονέας, τότε ένα Docker container είναι το παιδί. Σε αντίθεση με τα Docker images που μπορείτε να δημιουργήσετε μία φορά, μπορείτε να δημιουργήσετε πολλαπλά containers χρησιμοποιώντας ένα μόνο image. Για να ελέγξετε τη λίστα των εικόνων που εκτελούνται στο σύστημά σας, χρησιμοποιήστε την εντολή:
|
1 |
$docker ps |
Για να κάνετε pull ένα container, χρησιμοποιήστε την ακόλουθη εντολή:
|
1 |
$docker pull (όνομα του containercontainer) |
-
Πώς λειτουργούν τα Docker Images και Containers
Τα Docker images και containers λειτουργούν χέρι-χέρι για να απελευθερώσουν τις δυνατότητες του Docker. Ένα μεμονωμένο container δημιουργείται χρησιμοποιώντας το Docker image μέσω της εντολής run. Όταν δημιουργείτε ένα Docker container, δημιουργείται ένα νέο επίπεδο γνωστό ως Container Layer. Το επίπεδο που δημιουργήθηκε πρόσφατα περιέχει την εφαρμογή και τις εξαρτήσεις της. Κάθε container που δημιουργείτε έχει ένα διαφορετικό Container Layer ανάγνωσης/γραφής, και τυχόν αλλαγές που γίνονται στο Docker container αντικατοπτρίζονται αυτόματα στο Container Layer. Θυμηθείτε, εάν επιλέξετε να διαγράψετε ένα container, θα χάσετε επίσης το Container Layer.
Πείτε γεια στο Docker Compose
Docker Compose είναι ένα εργαλείο διαχείρισης κοντέινερ που σας επιτρέπει να ρυθμίσετε και να ενορχηστρώσετε όλα τα Docker containers σας σε ένα μόνο YAML αρχείο. Η εκκίνηση, η διακοπή και η δημιουργία συνδέσμων και τόμων (volumes) μεταξύ των κοντέινερ γίνονται ευκολότερες με αυτό το εργαλείο.
-
Τι κάνει το Docker Compose;
Απλά, το Docker Compose διευκολύνει τις περίπλοκες εργασίες εξαλείφοντας τις συγκρούσεις και τα οργανωτικά ζητήματα. Επιτρέπει στους χρήστες να διαχειρίζονται κεντρικά διαφορετικά Docker containers. Με άλλα λόγια, αντί να υπάρχουν όλες οι υπηρεσίες σε ένα μεγάλο container, το Docker Compose αναλύει μια υπηρεσία σε πολλαπλές υπηρεσίες, έτσι ώστε οι χρήστες να μπορούν να έχουν πρόσβαση και να τις διαχειρίζονται χωρίς κόπο.
Σε αυτόν τον οδηγό, θα σας καθοδηγήσουμε στα βήματα εγκατάστασης της τρέχουσας έκδοσης του Docker Compose για τη διαχείριση εφαρμογών πολλαπλών κοντέινερ στο CentOS 7. Θα εξετάσουμε επίσης μερικές βασικές εντολές που χρειάζεστε για να χρησιμοποιήσετε με επιτυχία το λογισμικό.
-
Πώς να χρησιμοποιήσετε το Docker Compose
Η χρήση του Docker Compose είναι εξαιρετικά εύκολη, ακόμη και για αρχάριους. Ας δούμε τη διαδικασία τριών βημάτων που περιλαμβάνει το Docker Compose:
1. Build: Αρχικά, δημιουργήστε (build) εικόνες στο Dockerfile σύμφωνα με τις ανάγκες του έργου σας, ή ίσως κάντε pull από το μητρώο (registry).
2. Ορισμός: Στη συνέχεια, πρέπει να ορίσετε όλες τις υπηρεσίες στοιχείων στο compose.yml αρχείο.
3. Εκτέλεση: Μετά τον ορισμό των στοιχείων, ήρθε η ώρα για εκτέλεση χρησιμοποιώντας την docker-compose εντολή.
Προαπαιτούμενα
Προτού προχωρήσουμε στην εγκατάσταση του Docker Compose στον CentOS διακομιστή σας, βεβαιωθείτε ότι έχετε:
- Έναν μη-root χρήστη με πρόσβαση sudo σε έναν CentOS 7 διακομιστή.
- εγκατεστημένο το Docker στο μηχάνημά σας. Παρακαλούμε ανατρέξτε σε αυτόν τον οδηγό σχετικά με το πώς να εγκαταστήσετε και να λειτουργήσετε το Docker στο Ubuntu 18.04.
Είστε έτοιμοι τώρα. Στη συνέχεια, ακολουθήστε τα παρακάτω βήματα για να εγκαταστήσετε το Docker Compose στο CentOS 7.
Βήμα 1: Εγκατάσταση του Docker Compose
Για να αποκτήσετε την πιο πρόσφατη έκδοση του Docker Compose, ακολουθήστε τις οδηγίες στην τεκμηρίωση του Docker και κάντε λήψη των εκτελέσιμων αρχείων από το αποθετήριο του Docker’s στο GitHub. Ελέγξτε ότι έχετε την τελευταία έκδοση του λογισμικού εκτελώντας την παρακάτω εντολή:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Για να καταστήσετε το εκτελέσιμο αρχείο λειτουργικό, ορίστε τα παρακάτω δικαιώματα:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Στη συνέχεια, αναζητήστε την έκδοσή σας για να ελέγξετε αν η εγκατάσταση ήταν επιτυχής:
|
1 |
$docker-compose --version |
Ο παρακάτω κώδικας θα εκτυπώσει την εγκατεστημένη έκδοση:
Στη συνέχεια, μπορείτε να εκτελέσετε ένα παράδειγμα “Hello World” χρησιμοποιώντας το Docker Compose που έχετε εγκαταστήσει.
Βήμα 2: Χρήση του Docker Compose για την εκτέλεση ενός Container
Υπάρχει μια εικόνα “Hello World” στο Docker Hub, το δημόσιο μητρώο του Docker, η οποία μπορεί να χρησιμοποιηθεί για επίδειξη και δοκιμή. Δείχνει πώς να εκτελέσετε ένα container χρησιμοποιώντας το Docker Compose με την ελάχιστη δυνατή παραμετροποίηση. Αρχικά, πρέπει να δημιουργήσετε έναν κατάλογο για το YAML αρχείο μας:
|
1 |
$mkdir hello-world |
Στη συνέχεια, μεταβείτε σε αυτόν τον κατάλογο:
|
1 |
$cd hello-world |
Στη συνέχεια, χρησιμοποιώντας τον επεξεργαστή κειμένου της προτίμησής σας, δημιουργήστε το αρχείο YAML. Σε αυτόν τον οδηγό, θα χρησιμοποιήσουμε το Vi:
|
1 |
$vi docker-compose.yml |
Πατήστε i για να μεταβείτε στη λειτουργία εισαγωγής, και στη συνέχεια πληκτρολογήστε αυτό στο αρχείο:
|
1 2 |
my-test: image: hello-world |
Στο όνομα του container, θα ενσωματωθεί η πρώτη γραμμή. Η δεύτερη γραμμή καθορίζει στο πρόγραμμα ποια εικόνα πρέπει να χρησιμοποιήσει για να δημιουργήσει το container. docker-composeup θα αναζητήσει μια τοπική εικόνα με το όνομα hello-world για να ελέγξει αν είναι διαθέσιμη όταν πληκτρολογείτε την εντολή. Για να βγείτε από τη λειτουργία εισαγωγής, πατήστε ESC. Στη συνέχεια, πληκτρολογήστε :x και πατήστε ENTER για να αποθηκεύσετε και να κλείσετε το αρχείο. Η εντολή docker images μπορεί να χρησιμοποιηθεί για να ελέγξετε χειροκίνητα για εικόνες στο μηχάνημά σας:
|
1 |
$ sudo docker images |
Μόνο οι επικεφαλίδες των στηλών εμφανίζονται όταν δεν υπάρχουν καθόλου τοπικές εικόνες:
Για να δημιουργήσετε το container, εκτελέστε αυτήν την εντολή ενώ βρίσκεστε ακόμα στον κατάλογο /hello-world:
|
1 |
$sudo docker-compose up |
Όταν εκτελείτε την εντολή για πρώτη φορά και δεν υπάρχει τοπική εικόνα με το όνομα hello-world, αυτή θα ληφθεί από το αποθετήριο του Docker Hub:
Για να διασφαλιστεί ότι η εγκατάσταση λειτουργεί, το Docker Compose ανακτά την εικόνα, κατασκευάζει ένα container, το συνδέει και εκτελεί το πρόγραμμα hello :
Μετά από αυτό, εμφανίζεται μια εκτύπωση της περιγραφής των όσων έγιναν:
Όταν το hello ολοκληρώσει τη λειτουργία του, το container θα τερματιστεί και η εντολή δεν θα εκτελείται πλέον στο container. Οι επικεφαλίδες των στηλών θα εμφανίζονται κατά την προβολή των ενεργών διεργασιών. Ωστόσο, το container hello-world δεν θα εμφανίζεται στη λίστα επειδή δεν λειτουργεί αυτήν τη στιγμή:
|
1 |
$sudo docker ps |
Για να δείτε όλα τα containers, όχι μόνο τα τρέχοντα, χρησιμοποιήστε τη σημαία -a :
|
1 |
$sudo docker ps -a |
Τώρα που δοκιμάσατε να εκτελέσετε ένα container, μπορείτε να συνεχίσετε για να μάθετε μερικές από τις βασικές εντολές του Docker Compose.
Βήμα 3: Εντολές του Docker Compose
Για να ξεκινήσετε με το Docker Compose, αυτή η ενότητα θα καλύψει τις βασικές εντολές που παρέχονται από το εργαλείο docker-compose. docker-compose είναι μια εντολή που λειτουργεί ανά κατάλογο. Δημιουργώντας έναν κατάλογο για κάθε container και ένα αρχείο docker-compose.yml ανά κατάλογο, μπορείτε να εκτελέσετε πολλές ομάδες Docker containers στον ίδιο υπολογιστή.
Μέχρι στιγμής, εκτελούσατε το Docker Compose μόνοι σας. Μπορείτε να το απενεργοποιήσετε πατώντας Ctrl-C. Αυτό επιτρέπει στο παράθυρο του τερματικού να εμφανίζει μηνύματα αποσφαλμάτωσης. Ωστόσο, συνιστάται να εκτελείτε το docker-compose ως υπηρεσία όταν λειτουργεί σε περιβάλλον παραγωγής. Η επιλογή -d μπορεί να χρησιμοποιηθεί ως ένας απλός τρόπος για να το επιτύχετε αυτό:
|
1 |
docker-compose up -d |
Τώρα, docker-compose εκτελείται στο παρασκήνιο. Η ομάδα των Docker containers σας (είτε έχουν σταματήσει είτε εκτελούνται) μπορεί να διαχειριστεί με την ακόλουθη εντολή:
|
1 |
$sudo docker-compose ps -a |
Η State ενός container θα αναφέρεται ως Exited εάν έχει διακοπεί, όπως φαίνεται στο παρακάτω παράδειγμα:
Ένα container που εκτελείται αυτή τη στιγμή θα εμφανίσει:
|
1 2 3 4 |
Name Command State Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
Μπορείτε να τερματίσετε όλα τα εκτελούμενα Docker containers στον ίδιο κατάλογο με το αρχείο docker-compose.yml που χρησιμοποιήσατε για να ξεκινήσετε την ομάδα Docker:
|
1 |
$docker-compose stop |
Note: Εάν πρέπει να τερματίσετε τη λειτουργία πιο αναγκαστικά, το docker-compose kill είναι επίσης διαθέσιμο.
In some instances, Docker containers may be able to save their old data inside. Use the rm command to remove all containers from your container group if you want to begin from scratch:
|
1 |
$docker-compose rm |
Η εκτέλεση οποιασδήποτε από αυτές τις εντολές από διαφορετικό κατάλογο από εκείνον στον οποίο βρίσκεται το Docker container και το αρχείο .yml θα έχει ως αποτέλεσμα ένα μήνυμα σφάλματος:
|
1 2 3 4 5 6 |
ERROR: Can't find a suitable configuration file in this directory ή any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml |
Σε αυτήν την ενότητα, καλύψαμε τα βασικά στοιχεία του χειρισμού των containers με το Docker Compose. Όπως συζητήθηκε, στην επόμενη ενότητα μπορείτε να αποκτήσετε πρόσβαση στο σύστημα αρχείων του Docker και να εκτελέσετε εντολές από μια γραμμή εντολών μέσα στο container, εάν χρειάζεστε πρόσθετο έλεγχο στα containers σας.
Step 4: Access the Docker Container Filesystem
Είναι δυνατή η εκτέλεση μιας γραμμής εντολών σε ένα container και η πρόσβαση στο σύστημα αρχείων του container χρησιμοποιώντας το docker exec, το οποίο είναι ένα εργαλείο γραμμής εντολών. Ως παράδειγμα, εκτελέστε το “Hello World” και δείτε πόσος χρόνος χρειάζεται για να ολοκληρωθεί η εντολή docker exec. Για τους σκοπούς αυτού του οδηγού, μπορεί να χρησιμοποιηθεί η Docker Hub image of Nginx. Δημιουργήστε έναν νέο κατάλογο με το όνομα nginx και μεταβείτε σε αυτόν:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
Θα πρέπει τώρα να έχετε ένα αρχείο docker-compose.yml, το οποίο μπορείτε να ανοίξετε σε έναν επεξεργαστή κειμένου:
|
1 |
vi docker-compose.yml |
Στη συνέχεια, στο αρχείο, προσθέστε τα ακόλουθα:
|
1 2 |
nginx: image: nginx |
Ήρθε η ώρα να κλείσετε την εφαρμογή. Για να ξεκινήσετε το Nginx container στο παρασκήνιο, χρησιμοποιήστε την ακόλουθη εντολή:
|
1 |
$sudo docker-compose up -d |
Το Docker Compose θα κατεβάσει την εικόνα Nginx και θα εκτελέσει το container στο παρασκήνιο. Για να συνεχίσετε, θα πρέπει να εισαγάγετε το CONTAINER ID του container. Μπορείτε να δείτε όλα τα containers που εκτελούνται αυτή τη στιγμή με την ακόλουθη εντολή:
|
1 |
$sudo docker ps |
Θα δείτε τα εξής:
Εάν θέλατε να τροποποιήσετε το σύστημα αρχείων μέσα σε αυτό το container, χρησιμοποιώντας το docker exec, θα χρησιμοποιούσατε το μοναδικό ID του container (σε αυτήν την περίπτωση, f139d0d78ca7) για να δημιουργήσετε ένα κέλυφος μέσα στο container:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Ένα διαδραστικό τερματικό μπορεί να ανοίξει χρησιμοποιώντας την επιλογή -t, ενώ το /bin/bash παρέχει στο container ένα κέλυφος bash. Αυτή είναι η προτροπή bash που θα δείτε για το container μετά από αυτό:
|
1 |
root@b86b6699714c:/# |
Μέσα στο container σας, θα βρείτε μια γραμμή εντολών. Η επανεκκίνηση του container θα αντικαταστήσει τυχόν αλλαγές που έχετε κάνει, εκτός εάν εργάζεστε σε έναν κατάλογο που έχει αποθηκευτεί ως μέρος ενός data volume. Εάν είστε εξοικειωμένοι με τη χρήση των εργαλείων γραμμής εντολών Linux, θα πρέπει να γνωρίζετε ότι τα περισσότερα Docker images δημιουργούνται χρησιμοποιώντας τις πιο βασικές εγκαταστάσεις Linux.
Συμπέρασμα
Σας καθοδηγήσαμε στα βήματα εγκατάστασης της τρέχουσας έκδοσης του Docker Compose για τη διαχείριση εφαρμογών πολλαπλών containers στο CentOS 7. Η ικανότητα του Docker Compose να εκκινεί και να τερματίζει ταυτόχρονα έναν μεγάλο αριθμό containers είναι εντυπωσιακή. Η μετάβαση από τα πρότυπα στις εφαρμογές διαρκεί μόλις λίγα λεπτά. Επομένως, εάν η εργασία σας περιλαμβάνει την ταυτόχρονη εκτέλεση πολλαπλών containers, η χρήση του Docker Compose είναι μια εξαιρετική επιλογή. Ωστόσο, δεν αποτελεί μια λύση που ταιριάζει σε κάθε περίπτωση. Μπορείτε επίσης να βρείτε κάποιες καλύτερες επιλογές, ανάλογα με τις ιδιαίτερες ανάγκες σας, για παράδειγμα, Kubernetes.
Για να εξερευνήσετε περαιτέρω τη δύναμη του Docker Compose, μπορείτε να ανατρέξετε σε αυτά τα σεμινάρια από το blog μας:
- Ανάπτυξη των Laravel, Nginx και MySQL με το Docker Compose
- Πώς να εγκαταστήσετε και να ρυθμίσετε το Docker Compose στο Ubuntu 20.04
Καλή συνέχεια!






Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.