Επιστροφή στο blog

Εγκατάσταση του Docker Compose στο CentOS 7

Εγκατάσταση του Docker Compose στο CentOS 7

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

Docker Containers και Images

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

  • Docker Images

Τα Docker images είναι μια συλλογή αρχείων μόνο για ανάγνωση. Μόλις δημιουργήσετε Docker images, δεν μπορείτε να τα τροποποιήσετε, αν και επιτρέπεται η διαγραφή τους. Χρησιμοποιούμε ένα Docker image για να δημιουργήσουμε ένα ή περισσότερα Docker containers σύμφωνα με τις ανάγκες μας. Για να ελέγξετε τον αριθμό των εικόνων που εκτελούνται στο σύστημά σας, χρησιμοποιήστε την εντολή:

Όταν κάνετε pull εικόνες από ένα απομακρυσμένο μητρώο (registry) όπως το Docker Hub, κάνετε λήψη αρχείων και φακέλων. Για να κάνετε pull μια εικόνα, χρησιμοποιήστε την εντολή:

  • Docker Containers

Τα Docker images είναι το προσχέδιο (blueprint) των Docker containers. Τεχνικά, ένα Docker container είναι ένα στιγμιότυπο (instance) ενός Docker image. Φανταστείτε, αν ένα Docker image είναι σαν γονέας, τότε ένα Docker container είναι το παιδί. Σε αντίθεση με τα Docker images που μπορείτε να δημιουργήσετε μία φορά, μπορείτε να δημιουργήσετε πολλαπλά containers χρησιμοποιώντας ένα μόνο image. Για να ελέγξετε τη λίστα των εικόνων που εκτελούνται στο σύστημά σας, χρησιμοποιήστε την εντολή:

Για να κάνετε pull ένα container, χρησιμοποιήστε την ακόλουθη εντολή:

  • Πώς λειτουργούν τα 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 διακομιστή σας, βεβαιωθείτε ότι έχετε:

Είστε έτοιμοι τώρα. Στη συνέχεια, ακολουθήστε τα παρακάτω βήματα για να εγκαταστήσετε το Docker Compose στο CentOS 7.

Βήμα 1: Εγκατάσταση του Docker Compose

Για να αποκτήσετε την πιο πρόσφατη έκδοση του Docker Compose, ακολουθήστε τις οδηγίες στην τεκμηρίωση του Docker και κάντε λήψη των εκτελέσιμων αρχείων από το αποθετήριο του Docker’s στο GitHub. Ελέγξτε ότι έχετε την τελευταία έκδοση του λογισμικού εκτελώντας την παρακάτω εντολή:

Για να καταστήσετε το εκτελέσιμο αρχείο λειτουργικό, ορίστε τα παρακάτω δικαιώματα:

Στη συνέχεια, αναζητήστε την έκδοσή σας για να ελέγξετε αν η εγκατάσταση ήταν επιτυχής:

Ο παρακάτω κώδικας θα εκτυπώσει την εγκατεστημένη έκδοση:

docker-compose --version

Στη συνέχεια, μπορείτε να εκτελέσετε ένα παράδειγμα “Hello World” χρησιμοποιώντας το Docker Compose που έχετε εγκαταστήσει.

Βήμα 2: Χρήση του Docker Compose για την εκτέλεση ενός Container

Υπάρχει μια εικόνα “Hello World” στο Docker Hub, το δημόσιο μητρώο του Docker, η οποία μπορεί να χρησιμοποιηθεί για επίδειξη και δοκιμή. Δείχνει πώς να εκτελέσετε ένα container χρησιμοποιώντας το Docker Compose με την ελάχιστη δυνατή παραμετροποίηση. Αρχικά, πρέπει να δημιουργήσετε έναν κατάλογο για το YAML αρχείο μας:

Στη συνέχεια, μεταβείτε σε αυτόν τον κατάλογο:

Στη συνέχεια, χρησιμοποιώντας τον επεξεργαστή κειμένου της προτίμησής σας, δημιουργήστε το αρχείο YAML. Σε αυτόν τον οδηγό, θα χρησιμοποιήσουμε το Vi:

Πατήστε i για να μεταβείτε στη λειτουργία εισαγωγής, και στη συνέχεια πληκτρολογήστε αυτό στο αρχείο:

Στο όνομα του container, θα ενσωματωθεί η πρώτη γραμμή. Η δεύτερη γραμμή καθορίζει στο πρόγραμμα ποια εικόνα πρέπει να χρησιμοποιήσει για να δημιουργήσει το container. docker-composeup θα αναζητήσει μια τοπική εικόνα με το όνομα hello-world για να ελέγξει αν είναι διαθέσιμη όταν πληκτρολογείτε την εντολή. Για να βγείτε από τη λειτουργία εισαγωγής, πατήστε ESC. Στη συνέχεια, πληκτρολογήστε :x και πατήστε ENTER για να αποθηκεύσετε και να κλείσετε το αρχείο. Η εντολή docker images μπορεί να χρησιμοποιηθεί για να ελέγξετε χειροκίνητα για εικόνες στο μηχάνημά σας:

Μόνο οι επικεφαλίδες των στηλών εμφανίζονται όταν δεν υπάρχουν καθόλου τοπικές εικόνες:

Docker Compose on CentOS 6

Για να δημιουργήσετε το container, εκτελέστε αυτήν την εντολή ενώ βρίσκεστε ακόμα στον κατάλογο /hello-world:

Όταν εκτελείτε την εντολή για πρώτη φορά και δεν υπάρχει τοπική εικόνα με το όνομα hello-world, αυτή θα ληφθεί από το αποθετήριο του Docker Hub:

sudo docker-compose up

Για να διασφαλιστεί ότι η εγκατάσταση λειτουργεί, το Docker Compose ανακτά την εικόνα, κατασκευάζει ένα container, το συνδέει και εκτελεί το πρόγραμμα hello :

hello program

Μετά από αυτό, εμφανίζεται μια εκτύπωση της περιγραφής των όσων έγιναν:

Docker Compose on CentOS 3

Όταν το hello ολοκληρώσει τη λειτουργία του, το container θα τερματιστεί και η εντολή δεν θα εκτελείται πλέον στο container. Οι επικεφαλίδες των στηλών θα εμφανίζονται κατά την προβολή των ενεργών διεργασιών. Ωστόσο, το container hello-world δεν θα εμφανίζεται στη λίστα επειδή δεν λειτουργεί αυτήν τη στιγμή:

sudo docker ps

Για να δείτε όλα τα containers, όχι μόνο τα τρέχοντα, χρησιμοποιήστε τη σημαία -a :

Docker Compose 2

Τώρα που δοκιμάσατε να εκτελέσετε ένα 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 μπορεί να χρησιμοποιηθεί ως ένας απλός τρόπος για να το επιτύχετε αυτό:

Τώρα, docker-compose εκτελείται στο παρασκήνιο. Η ομάδα των Docker containers σας (είτε έχουν σταματήσει είτε εκτελούνται) μπορεί να διαχειριστεί με την ακόλουθη εντολή:

Η State ενός container θα αναφέρεται ως Exited εάν έχει διακοπεί, όπως φαίνεται στο παρακάτω παράδειγμα:

Docker Compose on CentOS 5

Ένα container που εκτελείται αυτή τη στιγμή θα εμφανίσει:

Μπορείτε να τερματίσετε όλα τα εκτελούμενα Docker containers στον ίδιο κατάλογο με το αρχείο docker-compose.yml που χρησιμοποιήσατε για να ξεκινήσετε την ομάδα Docker:

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:

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

Σε αυτήν την ενότητα, καλύψαμε τα βασικά στοιχεία του χειρισμού των 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 και μεταβείτε σε αυτόν:

Θα πρέπει τώρα να έχετε ένα αρχείο docker-compose.yml, το οποίο μπορείτε να ανοίξετε σε έναν επεξεργαστή κειμένου:

Στη συνέχεια, στο αρχείο, προσθέστε τα ακόλουθα:

Ήρθε η ώρα να κλείσετε την εφαρμογή. Για να ξεκινήσετε το Nginx container στο παρασκήνιο, χρησιμοποιήστε την ακόλουθη εντολή:

Docker Compose on CentOS 1

Το Docker Compose θα κατεβάσει την εικόνα Nginx και θα εκτελέσει το container στο παρασκήνιο. Για να συνεχίσετε, θα πρέπει να εισαγάγετε το CONTAINER ID του container.  Μπορείτε να δείτε όλα τα containers που εκτελούνται αυτή τη στιγμή με την ακόλουθη εντολή:

Θα δείτε τα εξής:

 Docker Compose on CentOS 4

Εάν θέλατε να τροποποιήσετε το σύστημα αρχείων μέσα σε αυτό το container, χρησιμοποιώντας το docker exec, θα χρησιμοποιούσατε το μοναδικό ID του container (σε αυτήν την περίπτωση, f139d0d78ca7) για να δημιουργήσετε ένα κέλυφος μέσα στο container:

sudo docker exec -it

Ένα διαδραστικό τερματικό μπορεί να ανοίξει χρησιμοποιώντας την επιλογή -t, ενώ το /bin/bash παρέχει στο container ένα κέλυφος bash. Αυτή είναι η προτροπή bash που θα δείτε για το container μετά από αυτό:

Μέσα στο container σας, θα βρείτε μια γραμμή εντολών. Η επανεκκίνηση του container θα αντικαταστήσει τυχόν αλλαγές που έχετε κάνει, εκτός εάν εργάζεστε σε έναν κατάλογο που έχει αποθηκευτεί ως μέρος ενός data volume. Εάν είστε εξοικειωμένοι με τη χρήση των εργαλείων γραμμής εντολών Linux, θα πρέπει να γνωρίζετε ότι τα περισσότερα Docker images δημιουργούνται χρησιμοποιώντας τις πιο βασικές εγκαταστάσεις Linux.

Συμπέρασμα

Σας καθοδηγήσαμε στα βήματα εγκατάστασης της τρέχουσας έκδοσης του Docker Compose για τη διαχείριση εφαρμογών πολλαπλών containers στο CentOS 7. Η ικανότητα του Docker Compose να εκκινεί και να τερματίζει ταυτόχρονα έναν μεγάλο αριθμό containers είναι εντυπωσιακή. Η μετάβαση από τα πρότυπα στις εφαρμογές διαρκεί μόλις λίγα λεπτά. Επομένως, εάν η εργασία σας περιλαμβάνει την ταυτόχρονη εκτέλεση πολλαπλών containers, η χρήση του Docker Compose είναι μια εξαιρετική επιλογή. Ωστόσο, δεν αποτελεί μια λύση που ταιριάζει σε κάθε περίπτωση. Μπορείτε επίσης να βρείτε κάποιες καλύτερες επιλογές, ανάλογα με τις ιδιαίτερες ανάγκες σας, για παράδειγμα, Kubernetes.

Για να εξερευνήσετε περαιτέρω τη δύναμη του Docker Compose, μπορείτε να ανατρέξετε σε αυτά τα σεμινάρια από το blog μας:

Καλή συνέχεια!

author

Hark Labs

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

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