Learning Docker, Μέρος 6: Εργασία με δεδομένα

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

Μέρος 1: Τα βασικά
Μέρος 2: όροι και έννοιες
Μέρος 3: Dockerfiles
Μέρος 4: Μείωση του μεγέθους των εικόνων και επιτάχυνση της συναρμολόγησής τους
Μέρος 5: εντολές
Μέρος 6: εργασία με δεδομένα

Learning Docker, Μέρος 6: Εργασία με δεδομένα

Λάβετε υπόψη ότι αυτό το υλικό προετοιμάστηκε χρησιμοποιώντας την έκδοση 18.09.1 ​​του κινητήρα Docker και την έκδοση API 1.39.

Τα δεδομένα στο Docker μπορούν να αποθηκευτούν είτε προσωρινά είτε μόνιμα. Ας ξεκινήσουμε με τα προσωρινά δεδομένα.

Προσωρινή αποθήκευση δεδομένων

Υπάρχουν δύο τρόποι διαχείρισης των προσωρινών δεδομένων σε κοντέινερ Docker.

Από προεπιλογή, τα αρχεία που δημιουργούνται από μια εφαρμογή που εκτελείται σε ένα κοντέινερ αποθηκεύονται σε ένα επίπεδο κοντέινερ με δυνατότητα εγγραφής. Για να λειτουργήσει αυτός ο μηχανισμός, δεν χρειάζεται να ρυθμίσετε κάτι ιδιαίτερο. Αποδεικνύεται φθηνό και χαρούμενο. Η εφαρμογή πρέπει απλώς να αποθηκεύσει τα δεδομένα και να συνεχίσει να κάνει τα δικά της. Ωστόσο, αφού το κοντέινερ πάψει να υπάρχει, θα εξαφανιστούν και τα δεδομένα που αποθηκεύτηκαν με τόσο απλό τρόπο.

Η προσωρινή αποθήκευση αρχείων στο Docker είναι μια άλλη λύση που είναι κατάλληλη για περιπτώσεις όπου χρειάζεστε υψηλότερο επίπεδο απόδοσης από αυτό που μπορεί να επιτευχθεί χρησιμοποιώντας τον τυπικό μηχανισμό προσωρινής αποθήκευσης δεδομένων. Εάν δεν χρειάζεστε τα δεδομένα σας να αποθηκευτούν περισσότερο από όσο υπάρχει το κοντέινερ, μπορείτε να συνδεθείτε στο κοντέινερ tmpfs - ένα προσωρινό χώρο αποθήκευσης πληροφοριών που χρησιμοποιεί τη μνήμη RAM του κεντρικού υπολογιστή. Αυτό θα επιταχύνει την εκτέλεση των λειτουργιών εγγραφής και ανάγνωσης δεδομένων.

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

Μόνιμη αποθήκευση δεδομένων

Υπάρχουν δύο τρόποι για να κάνετε τη διάρκεια ζωής των δεδομένων μεγαλύτερη από τη διάρκεια ζωής του κοντέινερ. Ένας τρόπος είναι να χρησιμοποιήσετε την τεχνολογία bind mount. Με αυτήν την προσέγγιση, μπορείτε να προσαρτήσετε, για παράδειγμα, έναν πραγματικό φάκελο στο κοντέινερ. Οι διεργασίες εκτός του Docker θα μπορούν επίσης να λειτουργούν με δεδομένα που είναι αποθηκευμένα σε έναν τέτοιο φάκελο. Ετσι Κοίτα Τεχνολογία τοποθέτησης και σύνδεσης tmpfs.

Learning Docker, Μέρος 6: Εργασία με δεδομένα
Τοποθέτηση tmpfs και bind mount

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

Volumes Docker

Ένας τόμος είναι ένα σύστημα αρχείων που βρίσκεται στον κεντρικό υπολογιστή έξω από κοντέινερ. Οι τόμοι δημιουργούνται και διαχειρίζονται από το Docker. Ακολουθούν οι κύριες ιδιότητες των τόμων Docker:

  • Αποτελούν ένα μέσο μόνιμης αποθήκευσης πληροφοριών.
  • Είναι ανεξάρτητα και χωρίζονται από δοχεία.
  • Μπορούν να μοιραστούν μεταξύ διαφορετικών δοχείων.
  • Σας επιτρέπουν να οργανώσετε αποτελεσματική ανάγνωση και εγγραφή δεδομένων.
  • Οι τόμοι μπορούν να τοποθετηθούν στους πόρους ενός απομακρυσμένου παρόχου cloud.
  • Μπορούν να κρυπτογραφηθούν.
  • Μπορεί να τους δοθούν ονόματα.
  • Το κοντέινερ μπορεί να κανονίσει την εκ των προτέρων συμπλήρωση του τόμου με δεδομένα.
  • Είναι βολικά για δοκιμή.

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

Δημιουργία τόμων

Οι τόμοι μπορούν να δημιουργηθούν χρησιμοποιώντας αιτήματα Docker ή API.

Ακολουθεί μια οδηγία στο Dockerfile που σας επιτρέπει να δημιουργήσετε έναν τόμο κατά την εκκίνηση ενός κοντέινερ.

VOLUME /my_volume

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

Μπορείτε επίσης να δημιουργήσετε τόμους σε ένα Dockerfile χρησιμοποιώντας τη μορφή JSON.

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

Εργασία με τόμους από τη γραμμή εντολών

▍Δημιουργία τόμου

Μπορείτε να δημιουργήσετε έναν αυτόνομο τόμο με την ακόλουθη εντολή:

docker volume create —-name my_volume

▍Μάθετε πληροφορίες για τους τόμους

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

docker volume ls

Μπορείτε να εξερευνήσετε έναν συγκεκριμένο τόμο όπως αυτό:

docker volume inspect my_volume

▍Διαγραφή τόμου

Μπορείτε να διαγράψετε έναν τόμο όπως αυτός:

docker volume rm my_volume

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

docker volume prune

Πριν διαγράψετε τόμους, το Docker θα σας ζητήσει να επιβεβαιώσετε αυτήν τη λειτουργία.

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

docker system prune

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

Οι σημαίες --mount και --volume

Για να εργαστείτε με τόμους, όταν καλείτε την εντολή docker, θα χρειαστεί συχνά να χρησιμοποιείτε σημαίες. Για παράδειγμα, για να δημιουργήσετε έναν τόμο κατά τη δημιουργία κοντέινερ, μπορείτε να χρησιμοποιήσετε αυτήν την κατασκευή:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

Στην αρχαιότητα (μέχρι το 2017), η σημαία ήταν δημοφιλής --volume. Αρχικά, αυτή η σημαία (μπορεί επίσης να χρησιμοποιηθεί σε συντομευμένη μορφή, τότε μοιάζει -v) χρησιμοποιήθηκε για αυτόνομα εμπορευματοκιβώτια και η σημαία --mount - σε περιβάλλον Docker Swarm. Ωστόσο, από το Docker 17.06, η σημαία --mount μπορεί να χρησιμοποιηθεί σε οποιοδήποτε σενάριο.

Πρέπει να σημειωθεί ότι όταν χρησιμοποιείτε τη σημαία --mount ο όγκος των πρόσθετων δεδομένων που πρέπει να καθοριστούν στην εντολή αυξάνεται, αλλά, για διάφορους λόγους, είναι καλύτερο να χρησιμοποιήσετε αυτήν τη συγκεκριμένη σημαία και όχι --volume. Σημαία --mount είναι ο μόνος μηχανισμός που σας επιτρέπει να εργάζεστε με υπηρεσίες ή να προσδιορίζετε επιλογές προγράμματος οδήγησης τόμου. Επίσης, αυτή η σημαία είναι πιο εύκολη στη χρήση.

Στα υπάρχοντα παραδείγματα εντολών χειρισμού δεδομένων Docker, μπορείτε να δείτε πολλά παραδείγματα χρήσης της σημαίας -v. Όταν προσπαθείτε να προσαρμόσετε αυτές τις εντολές για τον εαυτό σας, να έχετε κατά νου ότι οι σημαίες --mount и --volume χρησιμοποιήστε διαφορετικές μορφές παραμέτρων. Δηλαδή, δεν μπορείτε απλά να αντικαταστήσετε -v επί --mount και αποκτήστε μια ομάδα εργασίας.

Η κύρια διαφορά μεταξύ --mount и --volume είναι ότι όταν χρησιμοποιείτε τη σημαία --volume όλες οι παράμετροι συλλέγονται μαζί σε ένα πεδίο και κατά τη χρήση --mount οι παράμετροι διαχωρίζονται.

Όταν εργάζεστε με --mount οι παράμετροι αντιπροσωπεύονται ως ζεύγη κλειδιού-τιμής, δηλαδή, μοιάζει key=value. Αυτά τα ζεύγη χωρίζονται με κόμμα. Εδώ είναι οι επιλογές που χρησιμοποιούνται συνήθως --mount:

  • type — τύπος στήριξης. Η τιμή για το αντίστοιχο κλειδί μπορεί να είναι δεσμεύουν, τόμος ή tmpfs. Εδώ μιλάμε για όγκους, δηλαδή μας ενδιαφέρει η αξία volume.
  • source - πηγή στήριξης. Για επώνυμους τόμους, αυτό είναι το όνομα του τόμου. Για ανώνυμους τόμους, αυτό το κλειδί δεν έχει καθοριστεί. Μπορεί να συντομευτεί σε src.
  • destination - τη διαδρομή στην οποία έχει τοποθετηθεί το αρχείο ή ο φάκελος στο κοντέινερ. Αυτό το κλειδί μπορεί να συντομευτεί σε dst ή target.
  • readonly - προσαρμόζει την ένταση που προορίζεται μόνο για διάβασμα. Η χρήση αυτού του κλειδιού είναι προαιρετική και δεν του εκχωρείται καμία τιμή.

Εδώ είναι ένα παράδειγμα χρήσης --mount με πολλές επιλογές:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

Αποτελέσματα της

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

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Ακολουθεί μια λίστα με τις επιλογές που χρησιμοποιούνται συνήθως για --mount, ισχύει σε μια εντολή της φόρμας docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

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

Αγαπητοί αναγνώστες! Τι υλικό Docker θα προτείνατε για αρχάριους να μάθουν;

Learning Docker, Μέρος 6: Εργασία με δεδομένα

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο