Kas notiks pēc izmaiņām attēlā?
sobes.tech AI
Atbilde no AI
Pēc izmaiņu veikšanas attēlā, pats attēls kļūst par jaunu, atsevišķu versiju. Nākamreiz, palaižot konteineru, kas balstīts uz šo attēlu, tas izmantos modificēto versiju, kas atspoguļo piemērotās izmaiņas. Vecie konteineri, kas ir palaisti iepriekšējo versiju attēlos, saglabās savu stāvokli un darbosies ar veco versiju, kamēr tie netiks apturēti un vēlreiz palaisti, balstoties uz jauno attēlu. Citiem vārdiem sakot, izmaiņas attēlā neietekmē jau palaistos konteinerus.
Apskatīsim dzīves ciklu, izmantojot Docker piemēru:
-
Build Dockerfile: Veicat izmaiņas
Dockerfile:# Atjaunināts Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 -
Build attēlu: Izpildiet būvniecības komandu:
# Izveido jaunu attēla versiju docker build -t my-webserver:v2 .Docker izveido jaunu slāni ar izmaiņām virs iepriekšējiem slāņiem.
my-webserver:v2tagad norāda uz jauno attēlu. -
Palaidiet jaunu konteineru: Palaidiet jaunu konteineru:
# Palaist jaunu attēla versiju docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2Šis konteineris izmantos jauno attēlu.
-
Esošie konteineri: Konteineri, kas ir palaisti, piemēram, uz
my-webserver:v1, turpinās darboties ar vecajiem datiem un konfigurācijām.
| Darbība | Rezultāts | Ietekme uz vecajiem konteineriem |
|---|---|---|
| Dockerfile izmaiņas | Attēla definīcijas kods mainās. | Nav |
| Attēla būvēšana (docker build) | Tiek izveidots jauns attēls ar unikālu ID. | Nav |
| Attēla marķēšana (docker tag) | Piešķirts jaunam attēlam alias. | Nav |
| Jauna konteineru palaišana | Jauns konteineris izmanto jauno attēlu. | Nav |
| Vecā konteineru pārstartēšana | Vecais konteineris tiek palaists ar veco attēlu. | Nav (pēc noklusējuma) |
| Vecā attēla dzēšana | Attēls tiek dzēsts, bet konteineri paliek. | Nav (konteineri paliek) |
Ja nepieciešams atjaunināt darbojošos konteinerus uz jauno attēla versiju, ir jāaptur un jādzēš vecie konteineri, pēc tam jāpalaiž jauni ar atjaunināto attēlu. Ražošanas vidē šādai atjaunināšanai izmanto orkestratorus, piemēram, Kubernetes, Docker Swarm vai rīkus kā Docker Compose, kas īsteno rolling update stratēģijas.