Χρήση του Dockerfile για την έκθεση των θυρών

Using Dockerfile Expose Ports



Είναι πραγματικά εύκολο να δημιουργήσετε μια προσαρμοσμένη εικόνα Docker από υπάρχουσες εικόνες Docker χρησιμοποιώντας Dockerfile Το Συνήθως οι άνθρωποι χρησιμοποιούν μια ελάχιστη βασική εικόνα όπως π.χ. αλπικός ή ubuntu/debian Για αυτόν τον σκοπό. Ας υποθέσουμε ότι θέλετε να δημιουργήσετε μια προσαρμοσμένη εικόνα Docker της αγαπημένης σας εφαρμογής ιστού γραμμένη σε NodeJS. Η εφαρμογή θα εκτελείται στη θύρα 8080 Το Από προεπιλογή, δεν θα μπορείτε να έχετε πρόσβαση στην εφαρμογή ιστού στη θύρα 8080 από το μηχάνημα φιλοξενίας σας. Θα πρέπει να πείτε στο Docker ότι θέλετε να ανοίξετε ή να ανοίξετε τη θύρα 8080 για να μπορείτε να έχετε πρόσβαση σε αυτό από τον κεντρικό υπολογιστή σας.

Σε αυτό το άρθρο, θα σας δείξω πώς να εκθέτετε τις θύρες χρησιμοποιώντας Dockerfile με ένα πραγματικό παράδειγμα του κόσμου. Ας αρχίσουμε.







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



Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε έναν κατάλογο έργου myapp/ στον κατάλογο HOME των χρηστών σας και μεταβείτε σε αυτόν:



$mkdir~/myapp&& CD~/myapp

Προετοιμασία της διαδικτυακής εφαρμογής:

Τώρα δημιουργήστε έναν κατάλογο src/ μεσα στην /myapp/ κατάλογο με την ακόλουθη εντολή:

$mkdirsrc

Στο src/ κατάλογο, θα διατηρηθεί ολόκληρος ο πηγαίος κώδικας της εφαρμογής μου NodeJS.

Θα δημιουργήσω απλά ένα απλό app.js αρχείο στο src/ κατάλογο και εκτελέστε έναν απλό διακομιστή ιστού στη θύρα 8080 μόνο για επίδειξη.

ο src/app.js το αρχείο περιέχει τις ακόλουθες γραμμές κωδικών:

Γράφοντας Dockerfile και Exporting Ports:

Τώρα δημιουργήστε ένα Dockerfile στο ~/myapp κατάλογο με την ακόλουθη εντολή:

$αφήDockerfile

Τώρα πληκτρολογήστε τις ακόλουθες γραμμές στο Dockerfile και σώστε το. Θα συζητήσω τι σημαίνουν αυτές οι γραμμές αργότερα.

Εδώ, ΑΠΟ ΑΛΠΙΝΑ: 3.8 σημαίνει, χρησιμοποιήστε το αλπικό: 3.8 Εικόνα Docker ως βάση για τη νέα εικόνα που θα χτίσουμε από αυτό Dockerfile Το

Ενημέρωση apk RUN σημαίνει, τρέξτε το ενημέρωση apk εντολή στη βασική εικόνα Docker αλπικό: 3.8 Το

RUN apk add –no-cache nodejs σημαίνει, τρέξτε το προσθήκη apk εντολή για εγκατάσταση της γλώσσας προγραμματισμού NodeJS στο αλπικό: 3.8 Εικόνα βάσης Docker.

ΑΝΤΙΓΡΑΦΗ ./src /εφαρμογή σημαίνει, αντιγράψτε όλα τα αρχεία από το /myapp/src κατάλογος στο /εφαρμογή κατάλογο της νέας εικόνας Docker που θα δημιουργήσουμε χρησιμοποιώντας το Dockerfile Το

CMD [/usr/bin/node, /app/app.js] σημαίνει, τρέξτε το /app/app.js αρχείο από το νέο κοντέινερ χρησιμοποιώντας κόμβος δυαδικό που βρίσκεται στο /usr/bin/node Το

Τέλος, προς ΕΚΘΕΣΗ 8080/tcp σημαίνει, εκθέστε ή ανοίξτε τη θύρα TCP 8080 στον κεντρικό υπολογιστή.

Δημιουργία προσαρμοσμένης εικόνας Docker χρησιμοποιώντας Dockerfile:

Τώρα ας δημιουργήσουμε μια προσαρμοσμένη εικόνα Docker αλπικός κόμβος: v1 χρησιμοποιώντας το Dockerfile που μόλις δημιουργήσαμε.

Πρώτα βεβαιωθείτε ότι βρίσκεστε στο /myapp/ κατάλογο και, στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε την προσαρμοσμένη εικόνα Docker αλπικός κόμβος: v1 :

$κατασκευή docker-tαλπικός κόμβος: v1.

Όπως μπορείτε να δείτε, η προσαρμοσμένη εικόνα Docker αλπικός κόμβος: v1 δημιουργείται. Η απαιτούμενη βασική εικόνα και πακέτα Docker αποσύρονται από το διαδίκτυο.

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

Δοκιμή της προσαρμοσμένης εικόνας Docker:

Τώρα μπορούμε να δοκιμάσουμε την προσαρμοσμένη εικόνα Docker αλπικός κόμβος: v1 πανεύκολα. Το μόνο που έχουμε να κάνουμε είναι να δημιουργήσουμε ένα δοχείο από αλπικός κόμβος: v1 εικόνα.

Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε ένα κοντέινερ Docker www από το αλπικός κόμβος: v1 Εικόνα Docker:

$docker run-ρε -το --όνομαwww αλπικός κόμβος: v1

Το δοχείο www δημιουργειται.

Τώρα ας μάθουμε τη διεύθυνση IP του www Δοχείο Docker με την ακόλουθη εντολή:

$docker επιθεώρηση www| λαβήΔιεύθυνση

Όπως μπορείτε να δείτε, στην περίπτωσή μου, η διεύθυνση IP είναι 172.17.0.3 Το Έτσι, η εφαρμογή NodeJS που έγραψα θα πρέπει να είναι προσβάσιμη από το πρόγραμμα περιήγησης ιστού στη θύρα 8080 αυτής της διεύθυνσης IP.

Βοϊλα! Μπορώ να έχω πρόσβαση στη θύρα 8080 του δικού μου www Δοχείο Docker.

Βασικά έτσι εκθέτετε ορισμένες θύρες στις προσαρμοσμένες εικόνες Docker που θα δημιουργήσετε χρησιμοποιώντας Dockerfile Το

Έκθεση θυρών TCP και UDP χρησιμοποιώντας Dockerfile:

Στην προηγούμενη ενότητα αυτού του άρθρου, σας έδειξα πώς να εκθέσετε μια θύρα TCP χρησιμοποιώντας ένα Dockerfile Το

Μπορείτε εύκολα να εκθέσετε μια θύρα TCP (ας πούμε θύρα TCP 53 ) στο δικό σας Dockerfile με την ακόλουθη γραμμή:

ΕΚΘΕΣΕΙ53/tcp

Μπορείτε επίσης να εκθέσετε μια θύρα UDP (ας πούμε θύρα UDP 53 ) με την ακόλουθη γραμμή στο δικό σας Dockerfile :

ΕΚΘΕΣΕΙ53/udp

Μπορείτε να εκθέσετε τη θύρα TCP και UDP ταυτόχρονα με τις ακόλουθες γραμμές στη δική σας Dockerfile :

ΕΚΘΕΣΕΙ53/tcp
ΕΚΘΕΣΕΙ53/udp

Εάν δεν καθορίσετε ποιο πρωτόκολλο (TCP ή UDP) θα χρησιμοποιήσετε, το TCP χρησιμοποιείται από προεπιλογή. Για παράδειγμα, εάν γράψετε την ακόλουθη γραμμή στο δικό σας Dockerfile :

ΕΚΘΕΣΕΙ53

Στη συνέχεια, το Docker θα υποθέσει ότι θέλετε να χρησιμοποιήσετε τη θύρα TCP 53.

Έκθεση πολλαπλών θυρών χρησιμοποιώντας Dockerfile:

Ας υποθέσουμε ότι θέλετε να δημιουργήσετε μια προσαρμοσμένη εικόνα MEAN stack Docker. Σε αυτήν την περίπτωση, θα εκτελείτε έναν διακομιστή HTTP σε κάποια θύρα (ας πούμε τη θύρα TCP 80 ή 8080), έναν διακομιστή FTP που λειτουργεί στη θύρα TCP 21, έναν διακομιστή βάσης δεδομένων SQL (ας πούμε MySQL) που λειτουργεί στη θύρα TCP 3306, ή διακομιστής βάσης δεδομένων NoSQL (ας πούμε MongoDB) που τρέχει στη θύρα TCP 27017 ή 27018, ένας διακομιστής SSH που λειτουργεί στη θύρα TCP 22. Είναι πολλές θύρες!

Τα καλά νέα είναι? μπορείτε να εκθέσετε όσες θύρες χρειάζονται στην προσαρμοσμένη εικόνα Docker που δημιουργήθηκε χρησιμοποιώντας Dockerfile Το

Οι θύρες στο παραπάνω παράδειγμα μπορούν να εκτεθούν με τις ακόλουθες γραμμές στο δικό σας Dockerfile :

ΕΚΘΕΣΕΙ80/tcp
ΕΚΘΕΣΕΙ8080/tcp
ΕΚΘΕΣΕΙείκοσι ένα/tcp
ΕΚΘΕΣΕΙ22/tcp
ΕΚΘΕΣΕΙ3306/tcp
ΕΚΘΕΣΕΙ27017/tcp
ΕΚΘΕΣΕΙ27018/tcp

Εάν θέλετε, μπορείτε να αφήσετε τις προδιαγραφές πρωτοκόλλου καθώς το Docker χρησιμοποιεί το TCP από προεπιλογή και κάντε το ίδιο πράγμα με τις ακόλουθες γραμμές στο Dockerfile :

ΕΚΘΕΣΕΙ80
ΕΚΘΕΣΕΙ8080
ΕΚΘΕΣΕΙείκοσι ένα
ΕΚΘΕΣΕΙ22
ΕΚΘΕΣΕΙ3306
ΕΚΘΕΣΕΙ27017
ΕΚΘΕΣΕΙ27018

Εάν χρειάζεται, μπορείτε να αναμίξετε τις θύρες TCP και UDP στη δική σας Dockerfile Το Για παράδειγμα, εάν εκτελείτε διακομιστή DNS (ο οποίος εκτελείται στη θύρα UDP 53), μαζί με το παραπάνω παράδειγμα, θα προσθέσετε τις ακόλουθες γραμμές στο Dockerfile Το

ΕΚΘΕΣΕΙ80
ΕΚΘΕΣΕΙ8080
ΕΚΘΕΣΕΙείκοσι ένα
ΕΚΘΕΣΕΙ22
ΕΚΘΕΣΕΙ53/udp
ΕΚΘΕΣΕΙ3306
ΕΚΘΕΣΕΙ27017
ΕΚΘΕΣΕΙ27018

Έτσι εκθέτετε τις θύρες χρησιμοποιώντας Dockerfile Το Για να μάθετε περισσότερα για Dockerfile και έκθεση των θυρών χρησιμοποιώντας Dockerfile , Διαβάστε το Dockerfile οδηγός αναφοράς στο https://docs.docker.com/engine/reference/builder/#expose

Ευχαριστώ που διαβάσατε αυτό το άρθρο.