Διαφορά μεταξύ dockerfile και docker-compose Ας κατανοήσουμε εν συντομία τη διαδικασία χρήσης του docker, η οποία χωρίζεται σε δημιουργία εικόνας και εκκίνηση κοντέινερ.
Κατασκευή εικόνας: δηλαδή, δημιουργήστε μια εικόνα που περιέχει το περιβάλλον, τον κώδικα προγράμματος κ.λπ. Αυτή η διαδικασία δημιουργίας γίνεται χρησιμοποιώντας ένα dockerfile.
Εκκίνηση κοντέινερ: Το κοντέινερ εκτελείται τελικά τραβώντας την ενσωματωμένη εικόνα και εκκινώντας την υπηρεσία μέσω μιας σειράς οδηγιών εκτέλεσης (όπως αντιστοίχιση θυρών, τοποθέτηση εξωτερικών δεδομένων, μεταβλητές περιβάλλοντος κ.λπ.). Για ένα μόνο κοντέινερ, αυτό μπορεί να εκτελεστεί μέσω docker run.
Εάν περιλαμβάνει την εκτέλεση πολλαπλών κοντέινερ (όπως η ενορχήστρωση υπηρεσιών), μπορεί να υλοποιηθεί μέσω του docker-compose, το οποίο μπορεί εύκολα να τρέξει πολλά κοντέινερ ως υπηρεσία (φυσικά, μόνο ένα από αυτά) και παρέχει τη λειτουργία κλίμακας (κλιμάκωση υπηρεσίας).
Σύντομη περίληψη:
1.dockerfile: δημιουργήστε την εικόνα.
2. Docker Run: Ξεκινήστε το κοντέινερ.
3. docker-compose: Ξεκινήστε την υπηρεσία.
Ξεκινήστε από την αρχή. Εάν δεν χρησιμοποιείτε το docker, πώς δημιουργείτε το wordpress; Βρείτε πρώτα έναν διακομιστή, υποθέστε ότι το λειτουργικό του σύστημα είναι το Ubuntu και, στη συνέχεια, ακολουθήστε την τεκμηρίωση βήμα προς βήμα για να πληκτρολογήσετε την εντολή και να γράψετε τη διαμόρφωση, σωστά; Τι γίνεται με τη χρήση του docker; Απλώς βρείτε έναν διακομιστή, ανεξάρτητα από το λειτουργικό σύστημα, αρκεί να υποστηρίζει docker, docker run ubuntu, docker θα τραβήξει την πιο πρόσφατη εικόνα του Ubuntu από την επίσημη πηγή, μπορείτε να το σκεφτείτε καθώς ανοίξατε μια εικονική μηχανή Ubuntu και, στη συνέχεια, εγκαταστήστε το βήμα προς βήμα, όπως παραπάνω.
Ωστόσο, αυτή η εγκατάσταση έχει ένα σημαντικό μειονέκτημα: μόλις διαγραφεί το κοντέινερ, δεν έχετε κάνει καμία εργασία. Φυσικά, μπορείτε να χρησιμοποιήσετε το docker commit για να το αποθηκεύσετε ως εικόνα, ώστε να μπορεί να επαναχρησιμοποιηθεί.
Αλλά η εικόνα είναι γενικά μεγάλη και αν μοιράζεστε μόνο την εικόνα, οι άλλοι δεν θα γνωρίζουν τι περιέχει η εικόνα σας, κάτι που δεν ευνοεί την κοινή χρήση και την επαναχρησιμοποίηση. Μια διαισθητική λύση είναι να γράψετε ένα σενάριο για να καταγράψετε ολόκληρη τη διαδικασία εγκατάστασης, έτσι ώστε όταν το εγκαταστήσετε ξανά, να μπορείτε να εκτελέσετε το σενάριο. Ένα Dockerfile είναι ένα τέτοιο σενάριο που τεκμηριώνει τη διαδικασία δημιουργίας μιας εικόνας. Με ένα Dockerfile, απλώς εκτελέστε το docker build . Μπορείτε να δημιουργήσετε μια εικόνα και το Dockerfile είναι ένα αρχείο κειμένου, το οποίο είναι πολύ εύκολο να τροποποιηθεί.
Τώρα που έχετε μια εικόνα WordPress, πρέπει απλώς να εκτελέσετε το docker για να θέσετε σε λειτουργία το WordPress.
Αν είναι μόνο WordPress, αυτό είναι αρκετό. Αλλά πολλές φορές, χρειάζονται πολλές εικόνες για να ξεκινήσει μια υπηρεσία, όπως nginx, mysql, υπηρεσία αλληλογραφίας κ.λπ. Συνηθέστερα, το nginx, το mysql και το smtp είναι όλες εικόνες και, στη συνέχεια, αυτές οι εικόνες συνεργάζονται για να εξυπηρετήσουν ένα έργο. Το docker-compose είναι η λύση σε αυτό το πρόβλημα. Πληροφορίες σχετικά με τις εικόνες που χρειάζεται το έργο σας, τον τρόπο διαμόρφωσης κάθε εικόνας, τους τόμους που θα προσαρτηθούν και ούτω καθεξής περιλαμβάνονται σε docker-compose.yml. Για να ξεκινήσετε μια υπηρεσία, χρειάζεται μόνο να κάνετε docker-compound up και χρειάζεται μόνο να κάνετε docker-compse stop/down για να τη σταματήσετε
Εν ολίγοις, ένα Dockerfile καταγράφει τη διαδικασία κατασκευής μιας μεμονωμένης εικόνας docker-compse.yml καταγράφει τη διαδικασία κατασκευής ενός έργου (συνήθως πολλαπλές εικόνες).
Είπατε ότι ορισμένα σεμινάρια χρησιμοποιούν dockerfile+docker-compose επειδή το ίδιο το docker-compose.yml δεν έχει πληροφορίες σχετικά με την κατασκευή της εικόνας και εάν η εικόνα τραβηχτεί από το μητρώο docker, τότε το dockerfile δεν χρειάζεται. Εάν η εικόνα πρέπει να κατασκευαστεί, τότε πρέπει να παρέχεται ένα αρχείο Docker.
docker-composeΕίναι ένα δοχείο ενορχήστρωσης. Για παράδειγμα, έχετε μια εικόνα php, μια εικόνα mysql και μια εικόνα nginx. Εάν δεν υπάρχει docker-compose, τότε κάθε φορά που ξεκινάτε, πρέπει να πληκτρολογείτε τις παραμέτρους εκκίνησης κάθε κοντέινερ, μεταβλητές περιβάλλοντος, όνομα κοντέινερ, να καθορίσετε τις παραμέτρους σύνδεσης διαφορετικών κοντέινερ και μια σειρά λειτουργιών, κάτι που είναι αρκετά δυσκίνητο. Αφού χρησιμοποιήσετε το docker-composer, μπορείτε να γράψετε αυτές τις εντολές σε docker-composer.yml αρχείο ταυτόχρονα και κάθε φορά που ξεκινάτε ολόκληρο το περιβάλλον (συμπεριλαμβανομένων 3 κοντέινερ), χρειάζεται μόνο να πληκτρολογήσετε μια εντολή docker-composer up.
dockerfileΟ ρόλος είναι να χτίσετε μια κατοπτρική εικόνα από την αρχή. Περιέχει το περιβάλλον, τον κώδικα προγράμματος κ.λπ. που απαιτούνται για την εγκατάσταση και τη λειτουργία. Αυτή η διαδικασία δημιουργίας γίνεται χρησιμοποιώντας ένα dockerfile. Dockerfile - Προετοιμάστηκε για την εντολή docker build για τη δημιουργία μιας αυτόνομης εικόνας, η οποία μπορεί επίσης να χρησιμοποιηθεί στο docker-compose για ζωντανή κατασκευή docker-compose.yml - Ένα σενάριο για docker-compose που μπορεί να διαχειριστεί πολλά κοντέινερ ταυτόχρονα, συμπεριλαμβανομένων των σχέσεων μεταξύ τους, είτε πρόκειται να δημιουργηθεί με επίσημη εικόνα είτε με τον εαυτό σας, διάφορους ορισμούς θυρών δικτύου, ορισμούς αποθηκευτικού χώρου κ.λπ |