Πώς να επανεκκινήσετε αυτόματα ένα κοντέινερ Docker όταν σταματήσει να ανταποκρίνεται

Τελευταία ενημέρωση: 02/07/2026
Συγγραφέας: Ντάνιελ Τεράσα

  • Χρήση των εγγενών πολιτικών επανεκκίνησης του Docker για την αντιμετώπιση σφαλμάτων συστήματος.
  • Υλοποίηση προσαρμοσμένων σεναρίων και cron για κοντέινερ με μη εύθραυστες καταστάσεις.
  • Προηγμένη ενσωμάτωση με το systemd για τον έλεγχο της ακολουθίας εκκίνησης και τερματισμού λειτουργίας.
  • Εναλλακτικές λύσεις και εργαλεία εξωτερικής παρακολούθησης όπως το Podman Quadlet.
Πώς να επανεκκινήσετε αυτόματα ένα κοντέινερ Docker όταν σταματήσει να ανταποκρίνεται

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

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

Πολιτικές επανεκκίνησης εγγενών δεδομένων Docker

Ο απλούστερος τρόπος για να επανεκκινήσετε αυτόματα ένα κοντέινερ Docker είναι χρησιμοποιώντας τη σημαία --restart κατά την εκκίνηση ενός κοντέινερ ή χρησιμοποιώντας την εντολή docker update Εάν το κοντέινερ έχει ήδη δημιουργηθεί, το Docker προσφέρει αρκετές επιλογές ανάλογα με τις ανάγκες σας. Για παράδειγμα, η πολιτική πάντοτε Αυτό θα προκαλέσει την πάντα επανεκκίνηση του κοντέινερ, ανεξάρτητα από το αν η διεργασία έληξε με σφάλμα ή αν ήταν ο ίδιος ο δαίμονας Docker που επανεκκινήθηκε.

Αποκλειστικό περιεχόμενο - Κάντε κλικ εδώ  Πώς μπορώ να μεταφράσω ένα κείμενο στο Google Translate;

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

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

Πώς να επανεκκινήσετε αυτόματα ένα κοντέινερ Docker όταν σταματήσει να ανταποκρίνεται
Πώς να επανεκκινήσετε αυτόματα ένα κοντέινερ Docker όταν σταματήσει να ανταποκρίνεται

Αυτοματοποίηση για "ανθυγιεινά" δοχεία

Εδώ είναι που τα πράγματα γίνονται ενδιαφέροντα. Μερικές φορές, ένα κοντέινερ εξακολουθεί να εμφανίζεται ως "Ενεργοποιημένο", αλλά η κατάσταση της υγείας του είναι... ανθυγιεινός επειδή αποτυγχάνει στους εσωτερικούς ελέγχους. Οι προηγούμενες πολιτικές είναι αναποτελεσματικές εδώ, καθώς η διαδικασία δεν είναι τεχνικά νεκρή. Για να επιλύσουμε αυτό το πρόβλημα, μπορούμε να εφαρμόσουμε την οδηγία ΕΛΕΓΧΟΣ ΥΓΕΙΑΣ στο αρχείο Docker ή στο αρχείο Docker Compose, ορίζοντας μια εντολή (όπως ένα curl σε μια συγκεκριμένη θύρα) για να επαληθεύσετε ότι η εφαρμογή ανταποκρίνεται.

Μόλις ολοκληρώσουμε τον έλεγχο εύρυθμης λειτουργίας, μπορούμε να δημιουργήσουμε ένα Σενάριο Bash που εκτελείται κάθε λίγα λεπτά χρησιμοποιώντας το crontab από το Linux. Αυτό το σενάριο θα πρέπει να φιλτράρει τα κοντέινερ που βρίσκονται σε κατάσταση unhealthy ή όσοι έχουν τερματίσει με κωδικό σφάλματος 128 και εκτελούν ένα docker restart σχετικά με αυτούς.

Αποκλειστικό περιεχόμενο - Κάντε κλικ εδώ  Πώς να εγκαταστήσετε έναν εκτυπωτή χωρίς CD

Για να λειτουργήσει ομαλά αυτό και να γίνει αυτόματη επανεκκίνηση ενός κοντέινερ Docker, είναι απαραίτητο ο χρήστης που εκτελεί την εργασία cron να έχει τα απαραίτητα δικαιώματα. δικαιώματα που απαιτούνται στην ομάδα DockerΜε αυτόν τον τρόπο, το σύστημα παρακολουθεί το περιβάλλον κάθε 5 ή 10 λεπτά και εμφανίζει οποιαδήποτε υπηρεσία έχει γίνει «ζόμπι», εγγυώμενη σχεδόν πλήρη διαθεσιμότητα χωρίς ανθρώπινη παρέμβαση.

docker στα windows 10
Σχετικό άρθρο:
Πώς να εγκαταστήσετε το Docker στα Windows 10

Προηγμένη ενσωμάτωση με το systemd

Όταν εργάζεστε σε πιο επαγγελματικά περιβάλλοντα, ίσως θέλετε τα κοντέινερ σας να συμπεριφέρονται ως εξής: εγγενείς υπηρεσίες LinuxΕνοποιώ Λιμενεργάτης Το Systemd σάς επιτρέπει να διαχειρίζεστε πολύπλοκες εξαρτήσεις, όπως να διασφαλίζετε ότι η βάση δεδομένων ξεκινά πριν από την εφαρμογή web. Αυτό επιτυγχάνεται με τη δημιουργία αρχείων. .service στη διαδρομή /etc/systemd/system/.

Μπορούμε να σχεδιάσουμε ένα ακολουθία απενεργοποίησης και ενεργοποίησης Ελεγχόμενο. Χρησιμοποιώντας προσαρμοσμένα σενάρια που συνδέονται με το systemd, είναι δυνατό να σταματήσετε τα κοντέινερ με αντίστροφη σειρά από τις εξαρτήσεις τους για να αποτρέψετε την καταστροφή δεδομένων. Χρησιμοποιώντας τον τύπο oneshot και διαμόρφωση του targets κατάλληλο (όπως π.χ. multi-user.target o shutdown.target), ο διακομιστής χειρίζεται ολόκληρο τον κύκλο ζωής του κοντέινερ.

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

Αποκλειστικό περιεχόμενο - Κάντε κλικ εδώ  Δεν μπορώ να απεγκαταστήσω ένα πρόγραμμα
Χρήση του Docker Desktop με το WSL
Πώς να επανεκκινήσετε αυτόματα ένα κοντέινερ Docker όταν σταματήσει να ανταποκρίνεται

Εξωτερικά εργαλεία και σύγχρονες εναλλακτικές λύσεις

Αν δεν θέλετε να μπείτε στον κόπο να γράφετε σενάρια Bash, υπάρχουν διαθέσιμα εργαλεία τρίτων. Υπάρχουν εφαρμογές ανοιχτού κώδικα ειδικά σχεδιασμένες για την επανεκκίνηση κοντέινερ με βάση ένα καθορισμένο πρόγραμμαΑυτό είναι πολύ χρήσιμο για επαναλαμβανόμενες εργασίες όπως η ανανέωση πιστοποιητικών SSL. Ομοίως, εργαλεία όπως Χρόνος λειτουργίας Κούμα Σας επιτρέπουν να παρακολουθείτε την εύρυθμη λειτουργία των υπηρεσιών από έναν οπτικό πίνακα ελέγχου και να στέλνετε ειδοποιήσεις στο Telegram ή το Gotify εάν ​​κάτι πάει στραβά. Είναι όλα πολύ χρήσιμα για την αυτόματη επανεκκίνηση ενός κοντέινερ Docker όταν σταματήσει να ανταποκρίνεται.

Για όσους αναζητούν μια ελαφρύτερη ή φυσική εναλλακτική λύση, Πόντμαν Είναι μια εξαιρετική επιλογή. Χάρη στην αρχιτεκτονική χωρίς δαίμονες και τη λειτουργικότητά του ΤετραπλόΣας επιτρέπει να δημιουργείτε απλά δηλωτικά αρχεία που το systemd μετατρέπει αυτόματα σε βελτιστοποιημένες υπηρεσίες, προσφέροντας μια πολύ πιο οργανική ενσωμάτωση από το παραδοσιακό Docker.

Ο πλήρης έλεγχος του κύκλου ζωής των υπηρεσιών σας περιλαμβάνει τον συνδυασμό της χρήσης πολιτικές επανεκκίνησης, συνεχής επιτήρηση μέσω ιατρικοί έλεγχοι και, σε πιο σύνθετες περιπτώσεις, την υποστήριξη systemd ή εργαλεία παρακολούθησης έτσι ώστε η υποδομή σας να είναι ισχυρή και να μην εξαρτάται από το να θυμάται κάποιος να επανεκκινεί χειροκίνητα τον διακομιστή κάθε εβδομάδα.