Sobes.tech
Middle

Kas nutiks po pakeitimų padarymo vaizde?

sobes.tech AI

Atsakymas iš AI

Po pakeitimų padarymo vaizde, pats vaizdas tampa nauja, atskira versija. Vykdant kitą kartą konteinerį, pagrįstą šiuo vaizdu, konteineris naudos pakeistą versiją, atspindinčią taikytus pakeitimus. Senieji konteineriai, paleisti pagal ankstesnes vaizdo versijas, išsaugos savo būseną ir veiks su sena versija, kol nebus sustabdyti ir vėl paleisti pagal naują vaizdą. Kitaip tariant, vaizdo pakeitimai neturi įtakos jau paleistiems konteineriams.

Pažiūrėkime gyvenimo ciklą, naudodami Docker pavyzdį:

  1. Build Dockerfile: Pakeičiate Dockerfile.

    # Atliktas Dockerfile
    FROM ubuntu:latest
    RUN apt-get update && apt-get install -y nginx
    COPY index.html /var/www/html/
    EXPOSE 80
    
  2. Build vaizdą: Vykdote statymo komandą.

    # Sukurkite naują vaizdo versiją
    docker build -t my-webserver:v2 .
    

    Docker sukuria naują sluoksnį su pakeitimais virš ankstesnių sluoksnių. my-webserver:v2 dabar nurodo į naują vaizdą.

  3. Paleiskite naują konteinerį: Paleidžiate naują konteinerį.

    # Paleisti naują vaizdo pagrindu
    docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2
    

    Šis konteineris naudos naują vaizdą.

  4. Esami konteineriai: Konteineriai, paleisti pagal pavyzdžiui, my-webserver:v1, toliau veiks su senais duomenimis ir konfigūracijomis.

Veiksmas Rezultatas Poveikis seniesiems konteineriams
Dockerfile pakeitimas Vaizdo apibrėžimo kodas keičiasi. Nėra
Vaizdo kūrimas (docker build) Sukuriamas naujas vaizdas su unikaliu ID. Nėra
Vaizdo žymėjimas (docker tag) Priskiriamas naujo vaizdo aliasas. Nėra
Naujo konteinerio paleidimas Naujas konteineris naudos naują vaizdą. Nėra
Senųjų konteinerių perkrovimas Paleidžiamas senasis konteineris su sena vaizdu. Nėra (pagal numatytuosius nustatymus)
Senos vaizdo ištrynimas Vaizdas ištrinamas, bet konteineriai išlieka. Nėra (konteineriai išlieka)

Jei reikia atnaujinti veikiančius konteinerius į naują vaizdo versiją, reikia sustabdyti ir ištrinti senus konteinerius, tada paleisti naujus pagal atnaujintą vaizdą. Produkcinėje aplinkoje tokias atnaujinimų valdymui naudojami orkestratoriai, tokie kaip Kubernetes, Docker Swarm ar įrankiai kaip Docker Compose, kurie įgyvendina rolling update strategijas.