Šta će se desiti nakon što se izvrše izmene na slici?
sobes.tech АИ
Одговор од АИ
Nakon što napravite izmene u slici, sama slika postaje nova, odvojena verzija. Pri sledećem pokretanju kontejnera zasnovanog na toj slici, kontejner će koristiti izmenjenu verziju koja odražava primenjene promene. Stari kontejneri, pokrenuti na osnovu prethodnih verzija slike, sačuvaće svoje stanje i radiće sa starom verzijom dok se ne zaustave i ponovo pokrenu na osnovu nove slike. Drugim rečima, promene u slici ne utiču na već pokrenute kontejnere.
Razmotrimo životni ciklus na primeru Docker-a:
-
Build Dockerfile: Unosite izmene u
Dockerfile.# Ažurovani Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 -
Build slike: Izvršavate komandu za izgradnju.
# Izgradnja nove verzije slike docker build -t my-webserver:v2 .Docker kreira novi sloj sa izmenama na vrhu prethodnih slojeva.
my-webserver:v2sada ukazuje na novu sliku. -
Pokretanje nove instance kontejnera: Pokrećete novi kontejner.
# Pokretanje kontejnera na osnovu nove verzije slike docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2Ovaj kontejner će koristiti novu verziju slike.
-
Postojeći kontejneri: Kontejneri, pokrenuti na osnovu, na primer,
my-webserver:v1, nastaviće da rade sa starim podacima i konfiguracijom.
| Akcija | Rezultat | Uticaj na stare kontejnere |
|---|---|---|
| Izmena Dockerfile | Kod definicije slike se menja. | Ne |
| Izgradnja slike (docker build) | Kreira se nova slika sa jedinstvenim ID-jem. | Ne |
| Tagovanje slike (docker tag) | Dodeljuje se alias novoj slici. | Ne |
| Pokretanje novog kontejnera | Novi kontejner koristi novu sliku. | Ne |
| Restart starog kontejnera | Pokreće stari kontejner na staroj slici. | Ne (po defaultu) |
| Brisanje stare slike | Slika se briše, ali kontejneri na njenoj osnovi ostaju. | Ne (kontejneri ostaju) |
Ako je potrebno ažurirati pokrenute kontejnere na novu verziju slike, potrebno je zaustaviti i obrisati stare kontejnere, a zatim pokrenuti nove na osnovu ažurirane slike. U proizvodnom okruženju za upravljanje takvim ažuriranjima koriste se orkestratori poput Kubernetes, Docker Swarm ili alati poput Docker Compose, koji implementiraju strategije rolling updates.