Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



Με τις εφαρμογές κοντέινερ «επανάσταση» έχει αναπτυχθεί πολύ περισσότερο από το να είναι απλώς μια βάση δεδομένων και ένα προσώπου. Οι εφαρμογές χωρίζονται σε διάφορες μικροϋπηρεσίες και συνήθως επικοινωνούν μεταξύ τους μέσω ενός REST API (συνήθως φορτωμένο φορτίο JSON φορτωμένο μέσω HTTP). Τα δοχεία Docker είναι ιδανικά για τέτοιου είδους αρχιτεκτονική. Μπορείτε να συσκευάσετε την προστιθέμενη «μικροϋπηρεσία» σας σε ένα δοχείο Docker, η βάση δεδομένων πηγαίνει σε άλλο, και ούτω καθεξής και ούτω καθεξής. Κάθε υπηρεσία συνομιλεί με μια άλλη μέσω ενός προκαθορισμένου REST API αντί να είναι μονόλιθος γραμμένη ως ένα μόνο κομμάτι λογισμικού.

Εάν πρέπει να εφαρμόσετε μια νέα λειτουργικότητα ή μια λειτουργία, π.χ. μια μηχανή ανάλυσης, μπορείτε απλά να γράψετε μια νέα υπηρεσία μικροϋπολογιστή για αυτό και θα καταναλώσει δεδομένα μέσω του REST API που εκτίθενται από τις διάφορες μικροϋπηρεσίες της διαδικτυακής σας εφαρμογής. Και καθώς η λειτουργικότητά σας αυξάνεται με την πάροδο του χρόνου, αυτή η λίστα με μικροϋπηρεσίες θα μεγαλώνει μαζί με αυτήν επίσης.







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



Το Docker-Compose είναι ένα από τα πιο απλά εργαλεία που σας βοηθά να μετατρέψετε την αφηρημένη ιδέα των μικροϋπηρεσιών σε ένα λειτουργικό σύνολο δοχείου Docker.



Κατανεμημένα Συστήματα

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





Το Docker Swarm σάς επιτρέπει να εκτελείτε πολλά αντίγραφα της εφαρμογής σας σε πολλούς διακομιστές. Εάν η μικροϋπηρεσία σας είναι γραμμένη με τρόπο ώστε να μπορεί να κλιμακωθεί «οριζόντια», τότε μπορείτε να χρησιμοποιήσετε το Docker Swarm για να αναπτύξετε την εφαρμογή ιστού σας σε πολλά κέντρα δεδομένων και πολλές περιοχές. Αυτό προσφέρει ανθεκτικότητα έναντι της αποτυχίας ενός ή περισσοτέρων κέντρων δεδομένων ή συνδέσμων δικτύου. Αυτό γίνεται συνήθως χρησιμοποιώντας μια υπο -εντολή στο Docker, δηλαδή το Docker Stack.

ο Docker Stack Το subcommand συμπεριφέρεται πολύ περισσότερο σαν την εντολή Docker-Compose και αυτό μπορεί να οδηγήσει σε λανθασμένες αντιλήψεις σε κάποιον που χρησιμοποιεί κάποια από τις τεχνολογίες.



Πηγή σύγχυσης

Όσον αφορά τη χρήση και τη ροή εργασίας, και οι δύο τεχνολογίες λειτουργούν πολύ παρόμοια μεταξύ τους και αυτό προκαλεί σύγχυση. Ο τρόπος με τον οποίο αναπτύσσετε την εφαρμογή σας χρησιμοποιώντας είτε το Docker Swarm είτε το Docker-Compose είναι πολύ παρόμοιος. Ορίζετε την εφαρμογή σας σε ένα αρχείο YAML, αυτό το αρχείο θα περιέχει το όνομα της εικόνας, τη διαμόρφωση για κάθε εικόνα και επίσης την κλίμακα (αριθμός αντιγράφων) που κάθε μικροϋπηρεσία θα χρειαστεί να καλύψει κατά την ανάπτυξη.

Η διαφορά έγκειται κυρίως στο backend, όπου το docker-compose αναπτύσσει το κοντέινερ σε έναν κεντρικό υπολογιστή Docker, το Docker Swarm το αναπτύσσει σε πολλούς κόμβους. Χαλαρά μιλώντας, μπορεί ακόμα να κάνει τα περισσότερα πράγματα που μπορεί να συνθέσει το docker, αλλά το κλιμακώνει σε πολλούς κεντρικούς υπολογιστές Docker.

Ομοιότητες

Τόσο το Docker Swarm όσο και το Docker-Compose έχουν τις ακόλουθες ομοιότητες:

  1. Και οι δύο λαμβάνουν ορισμούς μορφοποιημένων YAML για τη στοίβα της εφαρμογής σας.
  2. Και οι δύο προορίζονται να ασχοληθούν με εφαρμογές πολλαπλών εμπορευματοκιβωτίων (μικροϋπηρεσίες)
  3. Και οι δύο έχουν παράμετρο κλίμακας που σας επιτρέπει να εκτελέσετε πολλαπλά κοντέινερ της ίδιας εικόνας επιτρέποντας στην μικροϋπηρεσία σας να κλιμακωθεί οριζόντια.
  4. Και οι δύο διατηρούνται από την ίδια εταιρεία, δηλαδή, Docker, Inc.

Διαφορές

Οι λίγες διαφορές μεταξύ του Docker Swarm και του Docker-Compose:

  1. Το Docker Swarm χρησιμοποιείται για την κλιμάκωση της εφαρμογής ιστού σε έναν ή περισσότερους διακομιστές. Όπου ως Docker-compose θα εκτελεί απλώς την εφαρμογή ιστού σας σε έναν κεντρικό υπολογιστή Docker.
  2. Η κλιμάκωση της διαδικτυακής σας εφαρμογής Docker Swarm προσφέρει σοβαρή υψηλή διαθεσιμότητα και ανοχή σε σφάλματα. Η κλιμάκωση της εφαρμογής ιστού σας χρησιμοποιώντας το Docker-Compose σε έναν μόνο κεντρικό υπολογιστή είναι χρήσιμη μόνο για δοκιμές και ανάπτυξη.
  3. Το Docker Swarm και οι σχετικές υπο -εντολές όπως το Docker Swarm και το Docker Stack είναι ενσωματωμένες στο ίδιο το Docker CLI. Είναι όλα μέρος του δυαδικού Docker που καλείτε μέσω του τερματικού σας. Το Docker-Compose είναι αυτόνομο δυαδικό από μόνο του.

Θήκη χρήσης για Docker-Compose

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

Ας υποθέσουμε ότι θέλετε να φιλοξενήσετε μόνοι σας ένα WordPress Blog σε έναν μόνο διακομιστή. Η ρύθμιση ή η διατήρησή του δεν είναι κάτι που θέλετε να κάνετε χειροκίνητα, οπότε αυτό που θα κάνατε είναι να εγκαταστήσετε το Docker και το Docker-compose στο VPS σας, να δημιουργήσετε ένα απλό αρχείο YAML που καθορίζει όλες τις διάφορες πτυχές της στοίβας WordPress, όπως παρακάτω, :

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

εκδοχή:'3'

Υπηρεσίες:
db:
εικόνα: mysql:5.7
τόμοι:
- db_data:/όπου/lib/mysql
επανεκκίνηση: πάντα
περιβάλλον:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
εξαρτάται από:
- db
εικόνα: wordpress: τελευταία
θύρες:
-'8000: 80'
επανεκκίνηση: πάντα
περιβάλλον:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
τόμοι:
db_data:{}

Μόλις δημιουργηθεί το αρχείο και εγκατασταθούν τόσο το Docker όσο και το Docker-compose, το μόνο που έχετε να κάνετε είναι να εκτελέσετε:

$λιμενεργάτης-συνθέτω-ρε

Και ο ιστότοπός σας θα είναι σε λειτουργία. Εάν υπάρχει ενημέρωση, εκτελέστε:

$λιμενεργάτης-συνθέτω κάτω

Στη συνέχεια, πετάξτε τις παλιές εικόνες Docker και εκτελέστε την εντολή docker -compose up -d και θα εμφανιστούν αυτόματα νέες εικόνες. Δεδομένου ότι έχετε τα επίμονα δεδομένα αποθηκευμένα σε ένα Docker Volume, το περιεχόμενο του ιστότοπού σας δεν θα χαθεί.

Πότε να χρησιμοποιήσετε το Docker Swarm

Ενώ το Docker-compose είναι περισσότερο ένα εργαλείο αυτοματισμού, το Docker Swarm προορίζεται για πιο απαιτητικές εφαρμογές. Εφαρμογές ιστού με εκατοντάδες ή χιλιάδες χρήστες ή φόρτο εργασίας που πρέπει να κλιμακωθεί παράλληλα. Οι εταιρείες με μεγάλη βάση χρηστών και αυστηρές απαιτήσεις SLA θα ήθελαν να χρησιμοποιήσουν ένα κατανεμημένο σύστημα όπως το Docker Swarm. Εάν η εφαρμογή σας εκτελείται σε πολλούς διακομιστές και πολλά κέντρα δεδομένων, τότε οι πιθανότητες διακοπής λειτουργίας λόγω επηρεασμένου συνδέσμου DC ή δικτύου μειώνονται σημαντικά.

Τούτου λεχθέντος, διστάζω να συστήσω το Docker Swarm για περιπτώσεις χρήσης παραγωγής, επειδή ανταγωνιστικές τεχνολογίες όπως η Kubernetes είναι αναμφισβήτητα πιο κατάλληλες για αυτό το έργο. Το Kubernetes υποστηρίζεται εγγενώς σε πολλούς παρόχους cloud και λειτουργεί αρκετά καλά με τα Docker Containers, ώστε να μην χρειάζεται καν να ξαναφτιάξετε την εφαρμογή σας για να επωφεληθείτε από το Kubernetes.

συμπέρασμα

Ελπίζω ότι αυτή η περιπέτεια στο Docker και τα δορυφορικά του έργα ήταν ενημερωτική και είστε πιο προετοιμασμένοι για το οικοσύστημα των λιμενεργατών.