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

Τι είναι το Docker prune;

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

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

Σε τι χρησιμοποιείται το Docker prune;

Η εντολή prune είναι κατάλληλη για διάφορες περιπτώσεις στην καθημερινή χρήση του Docker. Παρακάτω παραθέτουμε τέσσερα τυπικά σενάρια χρήσης της.

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

Ενίσχυση της ασφάλειας: Οι περιττοί και παρωχημένοι πόροι του Docker ενδέχεται να ενέχουν κινδύνους για την ασφάλεια. Το Docker prune καταργεί τα αχρησιμοποίητα κοντέινερ, εικόνες, δίκτυα και τόμους, μειώνοντας έτσι την πιθανότητα να παραμείνουν απροστάτευτα παρωχημένα και ενδεχομένως ευάλωτα στοιχεία. Η διατήρηση ενός καθαρού οικοσυστήματος Docker ελαχιστοποιεί την επιφάνεια επίθεσης και ενισχύει τη συνολική κατάσταση ασφάλειας της υποδομής πληροφορικής σας.

Βελτίωση της απόδοσης: Ένα υπερφορτωμένο περιβάλλον Docker μπορεί να επηρεάσει αρνητικά την απόδοση του συστήματος, καθώς καταναλώνει περιττούς πόρους, όπως CPU και μνήμη. Ο τακτικός καθαρισμός με το Docker prune απελευθερώνει χώρο στο δίσκο και βελτιώνει την αποτελεσματικότητα της διαχείρισης και της εκτέλεσης των κοντέινερ. Αυτό έχει ως αποτέλεσμα σημαντικά μικρότερους χρόνους φόρτωσης, ταχύτερες αναπτύξεις εφαρμογών και βελτιωμένη συνολική ανταπόκριση του συστήματος.

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

Ποια είναι η σύνταξη του Docker prune;

Διαθέτετε περιβάλλον Docker και θέλετε να καθαρίσετε τους πόρους για να ελευθερώσετε χώρο στο δίσκο και να απλοποιήσετε τη διαχείριση; Σε αυτή την περίπτωση, απλώς εκτελέστε την ακόλουθη εντολή για να αποκτήσετε πρόσβαση σε prune υπηρεσίες:

docker system prune
bash

Από προεπιλογή, το Docker εντοπίζει τα τερματισμένα κοντέινερ, τις αχρησιμοποίητες εικόνες, τα δίκτυα και τους τόμους που μπορούν να διαγραφούν και σας ζητά επιβεβαίωση πριν από τη διαγραφή. Απλώς πληκτρολογήστε y και πατήστε το πλήκτρο Enter για να συνεχίσετε. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε την επιλογή -f για να παραλείψετε την επιβεβαίωση και να εκτελέσετε αμέσως τον καθαρισμό:

docker system prune -f
bash

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

docker ps -a
docker images
docker volume ls
docker network ls
bash

Επιλογές του Docker prune

Ο παρακάτω πίνακας σας παρέχει μια γενική εικόνα των διαφόρων επιλογών του docker system prune.

Επιλογή Περιγραφή
--all, -a Καταργεί όλους τους αχρησιμοποίητους πόρους του Docker.
--force, -f Εκτελεί τον καθαρισμό χωρίς επιβεβαίωση από τον χρήστη.
--volumes Καταργεί τους αχρησιμοποίητους τόμους.
--filter, -f Επιτρέπει το φιλτράρισμα των πόρων που θα αφαιρεθούν σύμφωνα με κριτήρια.
--help Εμφανίζει βοήθεια σχετικά με τον τρόπο χρήσης της εντολής.

Πώς να εκτελέσετε την εντολή Docker prune

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

Docker prune --filter

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

Η γενική σύνταξη είναι:

docker <command> prune --filter "filter=<value>"
bash

Οι διάφορες επιλογές φίλτρων περιλαμβάνουν:

  • until: Φιλτράρει τους πόρους με βάση την ημερομηνία δημιουργίας τους. Εδώ, <duration> μπορεί να είναι μια αριθμητική τιμή με μονάδα μέτρησης, όπως h (ώρες), m (λεπτά) ή s (δευτερόλεπτα).
docker <command> prune --filter "until=<duration>"
bash

Παράδειγμα: Διαγραφή όλων των διακοπέντων κοντέινερ που έχουν παρέλθει περισσότερες από 24 ώρες

docker container prune --filter "until=24h"
bash
  • label: Φιλτράρει τους πόρους με βάση τις ετικέτες Docker τους
docker <command> prune --filter "label=<label>"
bash

Παράδειγμα: Διαγράψτε όλους τους αχρησιμοποίητους τόμους που φέρουν την ετικέτα mylabel

docker volume prune --filter "label=mylabel"
bash
  • dangling: Φιλτράρει τους πόρους που δεν χρησιμοποιούνται πλέον από ένα κοντέινερ
docker <command> prune --filter "dangling=true"
bash

Παράδειγμα: Διαγραφή όλων των εικόνων που δεν χρησιμοποιούνται πλέον (εικόνες χωρίς σύνδεση)*

docker image prune --filter "dangling=true"
bash

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

  • before και since για εικόνες: Φιλτράρει τις εικόνες με βάση την ημερομηνία δημιουργίας τους, είτε πριν είτε μετά από ένα συγκεκριμένο χρονικό σημείο
  • exited για κοντέινερ: Φιλτράρει τα κοντέινερ με βάση την κατάσταση εξόδου τους (για παράδειγμα exited=0 για κοντέινερ που τερματίστηκαν με επιτυχία)

Πώς να καταργήσετε πόρους του Docker

Βήμα 1: Ανοίξτε ένα τερματικό ή μια γραμμή εντολών στο σύστημά σας.

Βήμα 2: Εκτελέστε το Docker prune για να καθαρίσετε το σύστημα:

docker {resource} prune
bash

Αντικαταστήστε {resource} με τον τύπο των πόρων που θέλετε να καθαρίσετε. Οι έγκυρες τιμές είναι container, image, volume και network.

Πώς να διαγράψετε κοντέινερ Docker

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

  • docker rm: Η εντολή docker rm προορίζεται για τη μη αυτόματη κατάργηση ενός ή περισσότερων κοντέινερ Docker. Αν γνωρίζετε ακριβώς ποια κοντέινερ θέλετε να διαγράψετε, αυτή είναι η κατάλληλη μέθοδος. Πρέπει να καθορίσετε ρητά τα αναγνωριστικά ή τα ονόματα των κοντέινερ που επιθυμείτε να καταργήσετε, ώστε να μπορείτε να διαγράψετε μόνο συγκεκριμένα κοντέινερ από το περιβάλλον σας χωρίς να επηρεάσετε τα υπόλοιπα.

Ακολουθεί ένα παράδειγμα για τη διαγραφή των κοντέινερ με τα ονόματα container1 και container2:

docker rm container1 container2
bash
  • docker container prune: Αντίθετα, η εντολή docker container prune έχει ως στόχο την ταυτόχρονη κατάργηση πολλών τερματισμένων κοντέινερ. Αυτή η μέθοδος είναι ιδιαίτερα κατάλληλη για την γρήγορη και αποτελεσματική απελευθέρωση χώρου, μέσω της διαγραφής όλων των τερματισμένων κοντέινερ που δεν έχουν αυτή τη στιγμή ενεργές διεργασίες.
docker container prune
bash

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

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

Πώς να διαγράψετε εικόνες Docker

Οι εικόνες Docker αποτελούν τα δομικά στοιχεία των κοντέινερ. Με την πάροδο του χρόνου, μπορεί να αποκτήσουν πολλές διαφορετικές εκδόσεις και ετικέτες. Όταν δημιουργείτε ή ενημερώνετε νέες εικόνες, συχνά παραμένουν παλιές ή αχρησιμοποίητες εικόνες, οι οποίες ονομάζονται «dangling». Αυτές καταλαμβάνουν χώρο στο δίσκο του συστήματός σας και μπορεί να επηρεάσουν την απόδοση, ειδικά αν υπάρχουν πολλές τέτοιες εικόνες.

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

docker image prune [Options]
bash

Μερικές πιθανές επιλογές εδώ είναι, για παράδειγμα:

  • -a, --all: Αυτή η επιλογή δεν αφαιρεί μόνο τις εικόνες χωρίς σύνδεση, αλλά και τις εικόνες που δεν χρησιμοποιούνται. Οι εικόνες που δεν χρησιμοποιούνται είναι εκείνες που δεν έχουν πλέον ετικέτες και, ως εκ τούτου, δεν μπορούν να αναφερθούν άμεσα μέσω ετικετών.
docker image prune -a
bash
  • -f, --force: Από προεπιλογή, το Docker ζητά επιβεβαίωση πριν από την πραγματική διαγραφή των εικόνων. Με τις επιλογές -f ή --force μπορείτε να παραλείψετε αυτό το βήμα επιβεβαίωσης και να εκτελέσετε τον καθαρισμό αμέσως.
docker image prune -f
bash

Πώς να διαγράψετε όλες τις εικόνες Docker

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

docker image prune -a --force
bash

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

Πώς να καταργήσετε τόμους Docker

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

docker volume prune
bash

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

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

docker volume rm volume_name
bash

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

Πώς να καταργήσετε δίκτυα Docker

Στο Docker, τα δίκτυα αποτελούν θεμελιώδες στοιχείο που επιτρέπει στα κοντέινερ να επικοινωνούν μεταξύ τους, είτε βρίσκονται στον ίδιο κεντρικό υπολογιστή είτε είναι κατανεμημένα σε πολλούς κεντρικούς υπολογιστές. Τα δίκτυα του Docker παραμένουν ενεργά ακόμη και μετά τον τερματισμό ή τη διαγραφή των κοντέινερ. Με την πάροδο του χρόνου, αυτό μπορεί να οδηγήσει σε συσσώρευση αχρησιμοποίητων δικτύων που καταναλώνουν πόρους χωρίς λόγο. Η εντολή docker prune network αποτελεί έναν εύκολο τρόπο για τον εντοπισμό και τη διαγραφή αυτών των αχρησιμοποίητων δικτύων.

Η εντολή έχει την ακόλουθη μορφή:

docker network prune [OPTIONS]
bash

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

Βέλτιστες πρακτικές για το Docker prune

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

Αν μόλις ξεκινάτε με το Docker, σας προτείνουμε να διαβάσετε το αναλυτικό μας σεμινάριο για το Docker.

Go to Main Menu