Sobes.tech
Middle

Č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:

  1. 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
    
  2. 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:v2 teraz odkazuje na nový obraz.

  3. 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:v2
    

    Tento kontajner bude používať novú verziu obrazu.

  4. 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.