Čo sa stane po vykonaní zmien v obraze?
sobes.tech AI
Odpoveď od AI
Po vykonaní zmien v obraze sa samotný obraz stáva novou, samostatnou verziou. Pri následnom spustení kontajnera založeného na tomto obraze bude kontajner používať upravenú verziu, odrážajúcu vykonané zmeny. Staré kontajnery, spustené na základe predchádzajúcich verzií obrazu, si zachovajú svoj stav a budú fungovať so starou verziou, kým nebudú zastavené a znovu spustené na základe nového obrazu. Inými slovami, zmeny v obraze neovplyvňujú už spustené kontajnery.
Poďme si prejsť životný cyklus na príklade Docker:
-
Build Dockerfile: Robíte zmeny v
Dockerfile.# Aktualizovaný Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 -
Build obrazu: Spúšťate príkaz na zostavenie.
# Vytvorenie novej verzie obrazu docker build -t my-webserver:v2 .Docker vytvorí nový vrstvu so zmenami na vrchu predchádzajúcich vrstiev.
my-webserver:v2teraz odkazuje na nový obraz. -
Spustenie nového kontajnera: Spúšťate nový kontajner.
# Spustenie kontajnera na základe novej verzie obrazu docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2Tento kontajner bude používať novú verziu obrazu.
-
Existujúce kontajnery: Kontajnery, spustené na základe napríklad
my-webserver:v1, budú pokračovať v práci so starými dátami a konfiguráciami.
| Akcia | Výsledok | Vplyv na staré kontajnery |
|---|---|---|
| Zmena Dockerfile | Kód definície obrazu sa zmení. | Nie |
| Skladanie obrazu (docker build) | Vytvorí sa nový obraz s unikátnym ID. | Nie |
| Tagovanie obrazu (docker tag) | Priradí sa alias novému obrazu. | Nie |
| Spustenie nového kontajnera | Nový kontajner používa nový obraz. | Nie |
| Reštart starého kontajnera | Spustí starý kontajner na starom obraze. | Nie (podľa predvolieb) |
| Vymazanie starého obrazu | Obraz sa vymaže, ale kontajnery na jeho základe zostávajú. | Nie (kontajnery zostávajú) |
Ak je potrebné aktualizovať bežiace kontajnery na novú verziu obrazu, je potrebné zastaviť a odstrániť staré kontajnery a potom spustiť nové na základe aktualizovaného obrazu. V produkčnom prostredí na správu takýchto aktualizácií sa používajú orchestrátory ako Kubernetes, Docker Swarm alebo nástroje ako Docker Compose, ktoré implementujú stratégie rolling updates.