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į:
-
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 -
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:v2dabar nurodo į naują vaizdą. -
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ą.
-
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.