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

Εργασία με Τόμους Δεδομένων Docker στο Ubuntu 20.04

Εργασία με Τόμους Δεδομένων Docker στο Ubuntu 20.04

Εισαγωγή

Docker Data Volumes είναι μια σημαντική έννοια κατά την ενθυλάκωση (containerizing) των εφαρμογών σας. Η γνώση αυτής της έννοιας είναι ζωτικής σημασίας για τη διασφάλιση της καλύτερης εμπειρίας της containerized εφαρμογής σας, μαζί με αξιόπιστη επιμονή και διαχείριση δεδομένων. Ωστόσο, ενώ αυτή η έννοια είναι σημαντική, είναι επίσης μπερδεμένη και περίπλοκη για πολλούς προγραμματιστές. Είναι σημαντικό για τους προγραμματιστές και τους ειδικούς DevOps να μπορούν να κατανοήσουν πώς να ρυθμίζουν τα Docker Data Volumes, να κατανοούν τη σωστή χρήση τους, να γνωρίζουν τους διαφορετικούς τύπους τόμων και ποιον τύπο να επιλέξουν για την εφαρμογή τους.

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

Προαπαιτούμενα

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

  1. Ubuntu εγκατεστημένο. Δείτε το Πώς να ρυθμίσετε τον Ubuntu 18.04 διακομιστή σας σεμινάριο για μια γρήγορη αναφορά.
  2. Χρήστης Ubuntu με δικαιώματα sudo. Αυτό το βήμα μπορεί να είναι περίπλοκο, ειδικά αν δεν είστε εξοικειωμένοι με το Linux. Διαβάστε το Configuring the Linux Sudoers File για έναν λεπτομερή οδηγό.
  3. Docker εγκατεστημένο στο Ubuntu. Για να εγκαταστήσετε το Docker στο Ubuntu σας, μπορείτε να ακολουθήσετε το How to install & operate Docker on Ubuntu in the public cloud ιστολόγιο.

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

Κατανόηση του τρόπου λειτουργίας των Docker Containers

Για να κατανοήσετε πλήρως τα Docker Data Volumes, πρέπει να γνωρίζετε πώς λειτουργούν τα Docker containers. Σε αυτήν την ενότητα, παρέχουμε μια ανασκόπηση των βασικών στοιχείων για τους νέους χρήστες του Docker. Εάν γνωρίζετε πώς λειτουργεί το Docker ή είστε έμπειρος χρήστης του Docker, μπορείτε να παραλείψετε αυτήν την ενότητα και να ξεκινήσετε με τους τόμους δεδομένων.

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

Καθώς δεν υπάρχει πρόσθετο λειτουργικό σύστημα επισκέπτη, η πλατφόρμα Docker μοιράζεται πόρους με το κεντρικό μηχάνημα. Η εκκίνηση της εφαρμογής Docker είναι γρήγορη, αλλά η πολυπλοκότητα εμφανίζεται όταν πρέπει να μοιραστείτε τους πόρους. Το Docker δεν διαθέτει δική του μνήμη ή χώρο αποθήκευσης για την επιμονή των δεδομένων. Αυτοί οι πόροι πρέπει να προέρχονται από το κεντρικό μηχάνημα. Οι άνθρωποι που έχουν συνηθίσει να χρησιμοποιούν εικονικές μηχανές βρίσκουν αυτή τη διαδικασία κοινής χρήσης και διαχείρισης πόρων δύσκολη. Η έλλειψη κατάλληλης γνώσης μπορεί να οδηγήσει σε απροσδόκητα και ανεπιθύμητα αποτελέσματα. Αν και αυτό το σεμινάριο προϋποθέτει ότι είστε εξοικειωμένοι με το οικοσύστημα του Docker, μη διστάσετε να διαβάσετε το λεπτομερές σεμινάριό μας What is Docker? An Overview of the Docker Ecosystem για μια γρήγορη επανάληψη.

Επιμονή Δεδομένων με τη Χρήση Docker Data Volumes

Όταν εργάζεστε με το Docker, δεν μπορείτε να δημιουργήσετε έναν τόμο απευθείας μέσα σε αυτό. Επομένως, για να αποθηκεύσουμε δεδομένα πρέπει να δημιουργήσουμε ένα Docker volume container με έναν τόμο συνδεδεμένο σε αυτό. Για να συνδέσουμε την εφαρμογή μας Docker με αυτό το data volume container, χρησιμοποιούμε την εντολή του Docker’s --volume-from για να πάρουμε το container και να το συνδέσουμε στην εφαρμογή μας.

Θα προχωρήσουμε στη διαδικασία βήμα προς βήμα:

  1. Αρχικά, δημιουργήστε ένα νέο container με το όνομα, my-container εκτελώντας την παρακάτω εντολή:
    Docker Data Volumes 1 docker create my-container
    Αυτό θα δημιουργήσει ένα νέο container στον φάκελο /tmp . Μπορείτε να αλλάξετε τον κατάλογο του φακέλου όπως απαιτείται.
  2. Τώρα που το data container σας είναι έτοιμο, μπορείτε να γράψετε σε αυτό εκτελώντας ένα νέο Ubuntu container με τη σημαία --volume-from και στη συνέχεια εκτελώντας το bash. Οτιδήποτε γράφουμε στο tmp ο κατάλογος θα αποθηκευτεί στον /tmp φάκελο του μηχανήματος υποδοχής μας:
    Docker Data Volumes 2 Run docker container
    Η -t επιλογή γραμμής εντολών καλεί ένα τερματικό από το εσωτερικό του container. Η -i σημαία καθιστά τη σύνδεση διαδραστική. Στο bash prompt για το Ubuntu container, δημιουργήστε ένα αρχείο στο /tmp:
  3. Finally, exit this bash by running the exit command. Next, run the below command:
    Docker Data Volumes 3 New container sample file
    Θα βρείτε το sample_file σε αυτόν τον κατάλογο. Δεν υπάρχει περιορισμός στον αριθμό των volumes που μπορείτε να ορίσετε. Μπορείτε να προσθέσετε όσα volumes θέλετε χρησιμοποιώντας τη --volumes-from σημαία. Μπορείτε επίσης να δημιουργήσετε όσα data volume containers θέλετε.

Πρόσβαση σε Δεδομένα Μεταξύ του Host και του Docker Container

Για αναγνώστες με εμπειρία στο Virtualization, αυτή η επιλογή είναι παρόμοια με την επιλογή κοινόχρηστου φακέλου (shared folder) σε εικονικές μηχανές. Εδώ, αντί να δημιουργήσουμε ένα data-only container, εκτελούμε την εφαρμογή Docker μας χρησιμοποιώντας μια εικόνα Docker και αντικαθιστούμε έναν από τους καταλόγους της με τα περιεχόμενα ενός καταλόγου στο σύστημα υποδοχής.

Ένα συνηθισμένο σενάριο θα ήταν η αποθήκευση των αρχείων καταγραφής (log files) στο μηχάνημα υποδοχής. Αυτό μπορεί να είναι απαραίτητο ώστε να μπορούμε να αναλύσουμε αυτά τα αρχεία όπως απαιτείται, χωρίς να χρειάζεται να μπούμε μέσα στο μηχάνημα. Για αυτό το σενάριο, υποθέστε ότι χρησιμοποιείτε την Docker Nginx image και θέλετε να αποθηκεύσετε τα αρχεία καταγραφής της στο μηχάνημα υποδοχής. Η εικόνα Docker Nginx γράφει τα logs στον κατάλογο /var/log/nginx , αλλά αυτό είναι το /var/log/nginx μέσα στο Docker Nginx container. Έτσι, αυτή η τοποθεσία δεν είναι προσβάσιμη από το μηχάνημα υποδοχής.

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

  1. Αρχικά, δημιουργήστε έναν κατάλογο στο μηχάνημα υποδοχής σας όπου θέλετε να αποθηκεύσετε τα logs:
    Στη συνέχεια, εκκινήστε το container σας εκτελώντας την παρακάτω εντολή:
    Docker run nginx container
  2. Αυτή η εντολή run δέχεται μερικά ορίσματα, οπότε ας την αναλύσουμε για να την κατανοήσουμε καλύτερα:
    • -p 5000:80: Ρύθμιση προώθησης θύρας (port forward). Το Nginx container ακούει στη θύρα 80 από προεπιλογή, και αυτό αντιστοιχίζει τη θύρα του Nginx container 80 στη θύρα 5000 στο σύστημα υποδοχής.
    • -d: Αποσύνδεση της διεργασίας και εκτέλεσή της στο παρασκήνιο (background).
    • -v ~/my-nginxlogs:/var/log/nginx: Συνδέουμε τον κατάλογο /var/log/nginx μέσα από το Nginx container στον κατάλογο /my-nginxlogs στο μηχάνημα υποδοχής. Αυτό το : διαχωρίζει τη διαδρομή του host από τη διαδρομή του container. Η διαδρομή του host προηγείται πάντα.

Τώρα που το Nginx container εκτελείται, ελέγξτε πρώτα αν ο διακομιστής Nginx εξυπηρετεί στη θύρα 5000 του μηχανήματος υποδοχής μας, ανοίγοντας το πρόγραμμα περιήγησής σας και εκτελώντας τη διεύθυνση URL: http://localhost:5000. Μόλις εμφανιστεί η σελίδα υποδοχής, ο διακομιστής Nginx είναι έτοιμος και δημιουργεί logs στον φάκελό του /var/log/nginx .

Αν ανοίξετε τον /my-nginxlogs φάκελο του μηχανήματος υποδοχής σας, θα δείτε τα αρχεία καταγραφής εδώ από το Docker Nginx container. Αν κάνετε αλλαγές στον φάκελο /my-nginxlogs στο μηχάνημα υποδοχής, ενώ το Nginx container εκτελείται, οι αλλαγές θα αντικατοπτρίζονται και στον φάκελο του container /var/log/nginx επίσης.

Συμπέρασμα

Σε αυτόν τον οδηγό, ακολουθήσαμε μια ολοκληρωμένη προσέγγιση για την κατανόηση των Docker Data Volumes. Εξετάσαμε τη δημιουργία volumes για την εφαρμογή σας, την κοινή χρήση δεδομένων μεταξύ του host και του Docker container, τους τύπους δεδομένων και τη διατήρηση δεδομένων (persisting data). Αυτό θα σας βοηθήσει στη διατήρηση δεδομένων στις containerized εφαρμογές σας, καθώς και στη διαχείριση της κατάστασης και των ρυθμίσεων της εφαρμογής.

Για περαιτέρω εκμάθηση σχετικά με το Docker, δείτε τους ακόλουθους οδηγούς από το ιστολόγιό μας:

Καλή υπολογιστική!

author

Pranay Kapgate

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

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

Σχόλια

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