Τι συμβαίνει μετά τις αλλαγές στην εικόνα;
sobes.tech AI
Απάντηση από AI
Μετά τις αλλαγές στην εικόνα, η ίδια η εικόνα γίνεται μια νέα, ξεχωριστή έκδοση. Όταν ξεκινάτε ένα κοντέινερ με βάση αυτήν την εικόνα, το κοντέινερ θα χρησιμοποιεί την τροποποιημένη έκδοση που αντικατοπτρίζει τις εφαρμοσμένες αλλαγές. Τα παλιά κοντέινερ, που ξεκίνησαν με προηγούμενες εκδόσεις της εικόνας, θα διατηρούν την κατάσταση και θα λειτουργούν με την παλιά έκδοση μέχρι να σταματήσουν και να επανεκκινηθούν με τη νέα εικόνα. Με άλλα λόγια, οι αλλαγές στην εικόνα δεν επηρεάζουν τα ήδη τρέχοντα κοντέινερ.
Ας δούμε τον κύκλο ζωής με το παράδειγμα Docker:
-
Κατασκευή Dockerfile: Κάνετε αλλαγές στο
Dockerfile.# Ενημερωμένο Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 -
Κατασκευή εικόνας: Εκτελείτε την εντολή κατασκευής.
# Δημιουργία μιας νέας έκδοσης εικόνας docker build -t my-webserver:v2 .Το Docker δημιουργεί ένα νέο στρώμα με τις αλλαγές πάνω από τα προηγούμενα στρώματα. Το
my-webserver:v2τώρα δείχνει στη νέα εικόνα. -
Εκκίνηση νέου κοντέινερ: Ξεκινάτε ένα νέο κοντέινερ.
# Εκκίνηση κοντέινερ με βάση τη νέα έκδοση εικόνας docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2Αυτό το κοντέινερ θα χρησιμοποιεί τη νέα έκδοση της εικόνας.
-
Υπάρχοντα κοντέινερ: Τα κοντέινερ που ξεκίνησαν με, για παράδειγμα,
my-webserver:v1, θα συνεχίσουν να λειτουργούν με τα παλιά δεδομένα και διαμόρφωση.
| Ενέργεια | Αποτέλεσμα | Επιρροή στα παλιά κοντέινερ |
|---|---|---|
| Αλλαγή στο Dockerfile | Ο κώδικας ορισμού της εικόνας αλλάζει. | Όχι |
| Κατασκευή εικόνας (docker build) | Δημιουργείται μια νέα εικόνα με μοναδικό ID. | Όχι |
| Ετικετοποίηση εικόνας (docker tag) | Δίνεται ένα ψευδώνυμο στη νέα εικόνα. | Όχι |
| Εκκίνηση νέου κοντέινερ | Το νέο κοντέινερ χρησιμοποιεί τη νέα εικόνα. | Όχι |
| Επανεκκίνηση παλιού κοντέινερ | Το παλιό κοντέινερ τρέχει με την παλιά εικόνα. | Όχι (κατά προεπιλογή) |
| Διαγραφή παλιάς εικόνας | Η εικόνα διαγράφεται, αλλά τα κοντέινερ που βασίζονται σε αυτήν παραμένουν. | Όχι (τα κοντέινερ παραμένουν) |
Εάν χρειάζεται να ενημερώσετε τα τρέχοντα κοντέινερ στην νέα έκδοση της εικόνας, πρέπει να σταματήσετε και να διαγράψετε τα παλιά, και στη συνέχεια να ξεκινήσετε νέα με την ενημερωμένη εικόνα. Σε περιβάλλοντα παραγωγής, τέτοιες ενημερώσεις διαχειρίζονται με orchestrators όπως το Kubernetes, Docker Swarm ή εργαλεία όπως το Docker Compose, που υλοποιούν στρατηγικές rolling updates.