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

Δημιουργία Container για μια εφαρμογή Python με χρήση του Docker

Δημιουργία Container για μια εφαρμογή Python με χρήση του Docker

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

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

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

Docker Containers

Όταν εκτελούνται διάφορα προγράμματα στο ίδιο περιβάλλον, τα πράγματα μπορούν να χαλάσουν (και θα χαλάσουν). Όσο περισσότερα προγράμματα προσθέτετε, τόσο πιο ασταθές γίνεται. Μπορεί να μην είναι μεγάλο πρόβλημα για τον μέσο χρήστη. Ωστόσο, όταν πρόκειται για κρίσιμες εφαρμογές, μπορεί να υπάρξουν σοβαρές συνέπειες.

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

Για να λύσουμε αυτά τα προβλήματα, μπορούμε να χρησιμοποιήσουμε Docker containers για sandboxing σε επίπεδο λογισμικού:

  • Οι εφαρμογές μέσα στο container θα έχουν περιορισμένη πρόσβαση σε αρχεία.

  • Οι εφαρμογές σε container δεν μπορούν να δουν άλλες διεργασίες που εκτελούνται στο σύστημα.

  • Στο container μπορεί να εκχωρηθεί ένας συγκεκριμένος όγκος πόρων υλικού.

  • Οι θύρες δικτύου ενός container δεν εκτίθενται προς τα έξω.

  • Συνεπής συσκευασία σχεδόν οποιουδήποτε στοιχείου σε τοπικά περιβάλλοντα και περιβάλλοντα παραγωγής.

Για να το δείξουμε αυτό, θα κατασκευάσουμε έναν απλό διακομιστή Python μέσα σε ένα Docker container, θα μετατρέψουμε το container σε image και θα αναπτύξουμε το image μέσα σε ένα εικονικό περιβάλλον παραγωγής.

Βήμα 1 – Ρύθμιση συστήματος αρχείων

Για να φιλοξενήσουμε το έργο, πρώτα θα δημιουργήσουμε έναν αποκλειστικό κατάλογο:

Μέσα στον κατάλογο, δημιουργήστε έναν υποκατάλογο src για να αποθηκεύσουμε τον κώδικά μας:

Βήμα 2 – Κατασκευή του διακομιστή Python

Σε αυτό το βήμα, θα δημιουργήσουμε έναν απλό διακομιστή HTTP σε Python. Δημιουργήστε το αρχείο server.py:

Ανοίξτε το σε έναν επεξεργαστή κειμένου:

Εισαγάγετε τον ακόλουθο κώδικα Python:

Εδώ,

  • Χρησιμοποιούμε την κλάση HTTPServer και ζητάμε έναν handler από την τυπική βιβλιοθήκη της Python, διατηρώντας το πρόγραμμα απλό.

  • Η συνάρτηση run εκκινεί ένα στιγμιότυπο του HTTPserver.

  • Όπως υποδηλώνουν τα ορίσματα του server_address, ο διακομιστής θα ακούει σε οποιαδήποτε εισερχόμενη σύνδεση στη θύρα 8080.

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

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

Εναλλακτικά, μπορείτε να αποκτήσετε πρόσβαση στον σύνδεσμο σε ένα πρόγραμμα περιήγησης ιστού:

Βήμα 3 – Δημιουργία ενός Dockerfile

Ένα Dockerfile  περιέχει τις απαραίτητες οδηγίες για τη δημιουργία μιας εικόνας Docker. Οι οδηγίες στο αρχείο ακολουθούνται διαδοχικά. Μάθετε περισσότερα για το Dockerfile.

Δημιουργήστε ένα νέο Dockerfile για το έργο μας:

Τώρα, θα εισαγάγουμε τους απαραίτητους κώδικες σε αυτό. Ανοίξτε το σε έναν επεξεργαστή κειμένου:

Εισαγάγετε τον ακόλουθο κώδικα:

Εδώ,

  • Κάθε Dockerfile πρέπει να ξεκινά με την FROM οδηγία. Στη δική μας περίπτωση, δηλώνουμε την Python ως τη βάση της εικόνας Docker.

  • Η ENV SRC_DIR οδηγία καθορίζει την τοποθεσία του καταλόγου του κοντέινερ.

  • Η COPY οδηγία αντιγράφει τα αρχεία από τον κατάλογο src που φιλοξενεί αυτή τη στιγμή τον διακομιστή Python.

  • Η μεταβλητή PYTHONBUFFERED=1 καθορίζει ότι η Python θα εκτυπώνει και θα καταγράφει την έξοδο απευθείας στο STDOUT. Διαφορετικά, τα αρχεία καταγραφής δεν θα στέλνονταν σε καμία προσωρινή μνήμη.

  • Η CMD οδηγία καθορίζει μια προεπιλεγμένη εντολή που θα εκτελείται κατά την εκκίνηση του κοντέινερ. Σε αυτή την περίπτωση, χρησιμοποιούμε την οδηγία για να εκκινήσουμε τον διακομιστή Python μας.

Βήμα 4 – Δημιουργία εικόνας Docker

Με το Dockerfile έτοιμο, μπορούμε τώρα να δημιουργήσουμε μια εικόνα. Εκτελέστε την ακόλουθη εντολή Docker για να ξεκινήσετε τη διαδικασία:

Εδώ,

  • Η -t σημαία χρησιμοποιείται για να επισημάνει την εικόνα Docker μας ως python_server.

  • Το Docker θα κατεβάσει όλα τα απαραίτητα στοιχεία και θα τα συνδυάσει σε μια εικόνα.

Βήμα 5 – Εκτέλεση της εικόνας

Η εικόνα είναι έτοιμη για ανάπτυξη. Μπορούμε να την εκτελέσουμε χρησιμοποιώντας την ακόλουθη εντολή:

Εδώ, προωθούμε τη θύρα 8080 από το τοπικό μηχάνημα στην εικόνα Docker χρησιμοποιώντας τη -p σημαία.

Μπορούμε εύκολα να επαληθεύσουμε εάν ο διακομιστής είναι σε λειτουργία χρησιμοποιώντας το curl:

Βήμα 6 – Τερματισμός του διακομιστή

Από το τερματικό, πατήστε “Ctrl + C” για να τερματίσετε τη διαδικασία Docker:

Βήμα 7 – Εξαγωγή και εισαγωγή της εικόνας Docker

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

Αρχικά, ελέγξτε τη λίστα των εικόνων Docker στο τρέχον σύστημα:

Ο στόχος μας είναι η εικόνα Docker python_server που μόλις δημιουργήσαμε. Η ακόλουθη εντολή θα την εξαγάγει ως αρχείο TAR:

Μετά τη μεταφορά του αρχείου python_server.tar στο μηχάνημα-στόχο, χρησιμοποιήστε την ακόλουθη εντολή για να εισαγάγετε την εικόνα Docker:

Τελικές σκέψεις

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

Ενδιαφέρεστε να μάθετε περισσότερα για το Docker; Δείτε τους παρακάτω οδηγούς:

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

author

Preslav Dobrev

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

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

Σχόλια

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