Εισαγωγή
Γενικά, τα Docker containers εκτελούνται μόνο για ένα συγκεκριμένο χρονικό διάστημα – το χρόνο που απαιτείται για την εκτέλεση της εντολής. Τα δεδομένα που είναι διαθέσιμα μέσα στο container μπορούν να προσπελαστούν μόνο από το εσωτερικό του container κατά τη διάρκεια του χρόνου εκτέλεσης.
Docker volumes μπορούν να χρησιμοποιηθούν για την εύκολη πρόσβαση στα αρχεία και την αποθήκευσή τους για μεγαλύτερο χρονικό διάστημα. Για παράδειγμα, εάν έχετε έναν Nginx web server και θέλετε να αποθηκεύσετε τα logs για ελέγχους, μπορείτε να χρησιμοποιήσετε ένα Docker volume για να αποθηκεύσετε τα logs από το container στο host μηχάνημά σας.
Σε αυτόν τον οδηγό, εσείς θα μάθετε πώς να μοιράζεστε δεδομένα μεταξύ του εσωτερικού του Docker container και του host μηχανήματος.
Προαπαιτούμενα
Για αυτόν τον οδηγό, θα χρειαστείτε τα ακόλουθα προαπαιτούμενα:
- Ubuntu 18.04 Server: Μπορείτε εύκολα να δημιουργήσετε έναν νέο CloudSigma server με είδωλο Ubuntu 18.04, ακολουθώντας τον χρήσιμο οδηγό μας.
- Docker – Μπορείτε να εγκαταστήσετε το Docker χρησιμοποιώντας τον οδηγό μας για το πώς να ρυθμίσετε το Docker σε Ubuntu και να εξοικειωθείτε με αυτό.
Βήμα 1 – Bind Mount ενός Volume
Μπορείτε να δημιουργήσετε έναν κατάλογο με όνομα logs στον αρχικό κατάλογο του τρέχοντος χρήστη σας και να τον κάνετε bind-mount στο /var/log/nginx στο Nginx container χρησιμοποιώντας την ακόλουθη εντολή:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
Εδώ υπάρχουν πιο λεπτομερείς πληροφορίες σχετικά με αυτήν την εντολή:
--name=nginxδίνει ένα όνομα στο container για εύκολη αναφορά.-dόρισμα αποσυνδέει τη διεργασία και την εκτελεί στο παρασκήνιο.-v hostPath:containerPathαντιστοιχεί τη διαδρομή του host και τη διαδρομή του container για το bind mount.-p hostPort:containerPortόρισμα αντιστοιχεί τη θύρα του container στη θύρα του host.nginxστο τέλος της γραμμής είναι το όνομα του ειδώλου που πρέπει να χρησιμοποιηθεί για την εκκίνηση του container.
Βήμα 2 – Πρόσβαση σε Δεδομένα στο Host
Τώρα, έχετε ένα Nginx container που εκτελείται στον διακομιστή σας, και η θύρα 5000 του διακομιστή σας αντιστοιχεί στη θύρα 80 του Nginx. Μπορείτε να ανοίξετε τη θύρα στο πρόγραμμα περιήγησης ιστού με την ακόλουθη διεύθυνση URL:
|
1 |
http://serverIP:5000/ |

Στον κατάλογο ~/logs, θα δείτε τα αρχεία access.log και error.log. Μπορείτε να δείτε τα logs χρησιμοποιώντας την εντολή cat:
|
1 |
cat access.log |
|
1 2 3 |
Output: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
Μπορείτε επίσης να ελέγξετε τον κατάλογο logs ~/logs στο host μηχάνημά σας και να βρείτε το αρχείο logs του Nginx. Επιπλέον, εάν κάνετε οποιεσδήποτε αλλαγές στον φάκελο logs, αυτές θα αντικατοπτρίζονται επίσης στον φάκελο /var/log/nginx του container.
Συμπέρασμα
Σε αυτόν τον οδηγό, μάθατε πώς να μοιράζεστε δεδομένα μεταξύ του εσωτερικού του Docker container και του host μηχανήματος. Αυτό είναι απαραίτητο σε περιβάλλοντα ανάπτυξης όπου η ανάλυση των logs είναι απαραίτητη για τον εντοπισμό σφαλμάτων.
Για περισσότερους πόρους σχετικά με το Docker στο blog μας, μπορείτε να δείτε τα ακόλουθα:
- Πώς να εγκαταστήσετε & να λειτουργήσετε το Docker σε Ubuntu στο δημόσιο cloud
- Installing and Setting up Docker on CentOS 7
- Καθαρισμός Πόρων Docker – Images, Containers, και Volumes
- Πώς να Εκτελέσετε το Docker στο CloudSigma (με CloudInit) Ενημερωμένο
Καλή συνέχεια!
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.