Containers
Docker vs Podman: Ποιος κινητήρας ανήκει στους διακομιστές σας;
Το Docker και το Podman εφαρμόζουν και τα δύο κοντέινερ, εικόνες OCI και σε μεγάλο βαθμό το ίδιο CLI, επομένως η επιλογή δεν είναι η ικανότητα: είναι η αρχιτεκτονική και η στάση του σώματος. Ο Docker συνδυάζει έναν δαίμονα ρίζας με το πλουσιότερο οικοσύστημα. Το Podman συνδυάζει δοχεία χωρίς ρίζα fork-exec με ενσωμάτωση της υπηρεσίας systemd-native. Αυτός είναι ο ειλικρινής πίνακας αποφάσεων πίσω από τα δύο αφιερωμένα άρθρα.
Βασικά σημεία
- Το ερώτημα του δαίμονα είναι η διχάλα στο δρόμο: Ο ριζικός δαίμονας του Docker (docker.sock) είναι ένα μεμονωμένο σημείο ισοδύναμου ρίζας με πραγματικό ιστορικό εκμετάλλευσης σε εκτεθειμένες αναπτύξεις και το μοντέλο fork-exec του Podman δεν έχει ισοδύναμη κεντρική προνομιακή επιφάνεια. Εάν τα κοντέινερ αγγίζουν μη αξιόπιστους χρήστες ή εκτελούνται σε κοινόχρηστα κτήματα, το rootless συνήθως κερδίζει το επιχείρημα εντελώς.
- Η συμβατότητα είναι πραγματικά υψηλή: το λεξιλόγιο CLI, οι εικόνες OCI και τα μητρώα είναι κοινόχρηστη περιοχή. η τριβή ζει σε εργαλεία οικοσυστήματος που προϋποθέτει το docker.sock (ορισμένοι CI runners, ορισμένα διαχειριστικά γραφικά περιβάλλοντα όπως το Portainer χρειάζονται προσαρμογείς) παρά στους ίδιους τους κινητήρες.
- Το Rootless διαφέρει στη λειτουργική υφή: Το Podman χωρίς root μέσω χώρων ονομάτων χρήστη μετατοπίζει προγράμματα οδήγησης αποθήκευσης και εύρος θυρών (οι υψηλές θύρες χρειάζονται ξεκάθαρα κουμπιά όπως το sysctl net.ipv4.ip_unprivileged_port_start), ενώ η λειτουργία χωρίς root του Docker υπάρχει αλλά φέρει περισσότερες προειδοποιήσεις. σχεδιάστε το επίπεδο δικτύου σε κεντρικούς υπολογιστές Podman αντί να το ανακαλύψετε την ημέρα εκκίνησης.
- Η ενσωμάτωση υπηρεσιών αποκλίνει φιλοσοφικά: τα systemd quadlet στην πλευρά του Podman εκφράζουν υπηρεσίες κοντέινερ εγγενώς (πολιτικές επανεκκίνησης, ενεργοποίηση υποδοχών, έλεγχοι πόρων), ενώ το Docker στο systemd χρησιμοποιεί περιτυλίγματα μονάδων γύρω από τον δαίμονα συν επανεκκίνηση=πάντα. Και οι δύο λειτουργούν, η σημασιολογία των τετράδων ικανοποιεί τους ελεγκτές πιο φυσικά.
- Η βαρύτητα του οικοσυστήματος είναι η πραγματική τάφρο του Docker: τα σεμινάρια, οι εικόνες CI, τα εργαλεία GPU και οι ενσωματώσεις του Docker Desktop προϋποθέτουν το docker πρώτα και οι προγραμματιστές σπάνια παρατηρούν το Podman μέχρι να χτυπήσουν ένα εργαλείο με σκληρό κώδικα στη διαδρομή υποδοχής. επιλέξτε Podman ανά κεντρικό υπολογιστή όπου η στάση ασφαλείας απαιτεί και αφήστε το CI να κρατήσει το Docker όπου απαιτείται η εργαλειοθήκη.
- Κανόνας απόφασης που χρησιμοποιούμε σε αυτές τις κατηγορίες: RHEL-οικογένεια και ευαίσθητα στην ασφάλεια κοινόχρηστα κτήματα προεπιλογή σε Podman χωρίς root. Μικτά κτήματα βαριά για προγραμματιστές και οτιδήποτε GPU ή κλειδωμένο από το οικοσύστημα παραμένει Docker. οι κινητήρες συνυπάρχουν καθαρά σε ξεχωριστούς οικοδεσπότες, επομένως αυτή είναι μια απόφαση ανά οικοδεσπότη, όχι μια θρησκεία.
Σημείωση από το πεδίο
Το ειλικρινές αποτέλεσμα σε έναν πελάτη διπλής όψης: Ο Docker παραμένει στον στόλο του σταθμού εργασίας προγραμματιστών (το απαιτούν τα εργαλεία), το podman χωρίς root διαχειρίζεται τους κεντρικούς υπολογιστές παραγωγής που έχουν πρόσβαση στο διαδίκτυο. Και οι δύο πλευρές υποστήριξαν ότι κέρδισαν. Και οι δύο έχουν δίκιο και το κτήμα είναι πιο ασφαλές για τη διάσπαση.
Συχνές ερωτήσεις
Είναι το ένα πιο γρήγορο από το άλλο;
Η απόδοση χρόνου εκτέλεσης κοντέινερ είναι ουσιαστικά ισοδύναμη (και τα δύο χρησιμοποιούν τους ίδιους χρόνους εκτέλεσης OCI όπως το crun/runc). Οι διαφορές εμφανίζονται στη συμπεριφορά της κρυφής μνήμης κατασκευής και στις διαδρομές δικτύου, όχι στην εξυπηρέτηση σε σταθερή κατάσταση.
Μπορούν να τρέχουν δίπλα-δίπλα σε έναν κεντρικό υπολογιστή;
Τεχνικά ναι αλλά λειτουργικά προκαλεί σύγχυση (δύο γραφήματα αποθήκευσης, δύο δίκτυα). Η τυπική πρακτική είναι ένας κινητήρας ανά κεντρικό υπολογιστή, τυποποιημένος ανά ζώνη περιουσίας, επομένως τα εργαλεία και η παρακολούθηση παραμένουν συνεκτικά.
Τι συμβαίνει με τα αρχεία σύνθεσής μου;
Επιβιώνουν και στους δύο κινητήρες (podman-compose ή Docker's compose). Ο υπολειπόμενος πόνος είναι μικρές διαφορές στις συμπεριφορές δικτύωσης και τοποθέτησης όγκου που εμφανίζονται σε ακραίες περιπτώσεις, γι' αυτό υπάρχει η σταδιοποίηση.
Είναι το Podman απλώς «Docker for RHEL»;
Αρχιτεκτονικά πέρα από το RHEL πια: είναι ένας ξεχωριστός κινητήρας με στάση ασφαλείας χωρίς ρίζες, ενοποίηση συστήματος και σημασιολογία pod. η προεπιλεγμένη κατάσταση RHEL έχει σημασία για την υποστήριξη, όχι για την αρχιτεκτονική.
Πώς βοηθάει η Kinetikatech στα containers
Αυτό κάνουμε κάθε μέρα: Διαχείριση, ενορχήστρωση και ασφάλεια containers σε περιβάλλοντα παραγωγής. Η υπηρεσία μας Διαχείριση διακομιστών and Ασφάλεια διακομιστών Linux καλύπτει το θέμα από την αρχή ως το τέλος: εκτίμηση, εφαρμογή, παρακολούθηση 24/7 και επείγουσα αντιμετώπιση μέσα σε 30 λεπτά.