Mi történik a kép módosítása után?
sobes.tech MI
Válasz az MI-től
Miután módosításokat hajtott végre a képen, maga a kép egy új, különálló verzióvá válik. Amikor egy konténert indítanak ezen a képen, a konténer az alkalmazott módosításokat tükröző módosított verziót fogja használni. A régi konténerek, amelyek korábbi verziók alapján indultak, megőrzik állapotukat és a régi verzióval működnek, amíg le nem állítják és újra nem indítják az új képpel. Más szóval, a képben végrehajtott változtatások nem befolyásolják a már futó konténereket.
Nézzük meg az életciklust a Docker példáján keresztül:
-
Dockerfile építése: Változtatásokat hajt végre a
Dockerfile-ban.# Frissített Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 -
Kép építése: A build parancs futtatása.
# Új képverzió létrehozása docker build -t my-webserver:v2 .A Docker egy új réteget hoz létre a korábbi rétegek fölött végrehajtott változtatásokkal. A
my-webserver:v2mostantól az új képre mutat. -
Új konténer indítása: Új konténert indít.
# Új verziójú kép alapján konténer indítása docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2Ez a konténer az új képet fogja használni.
-
Létező konténerek: Az olyan konténerek, amelyek például a
my-webserver:v1-en alapulnak, továbbra is az régi adatokkal és konfigurációval működnek.
| Művelet | Eredmény | Hatás a régi konténerekre |
|---|---|---|
| Dockerfile módosítása | A kép definíciós kódja megváltozik. | Nem |
| Kép építése (docker build) | Egy új kép jön létre egy egyedi azonosítóval. | Nem |
| Kép címkézése (docker tag) | Egy alias-t rendel az új képhez. | Nem |
| Új konténer indítása | Az új konténer az új képet használja. | Nem |
| Régi konténer újraindítása | A régi konténer az régi képpel fut. | Nem (alapértelmezett) |
| Régi kép törlése | A kép törlődik, de a rá alapuló konténerek megmaradnak. | Nem (a konténerek megmaradnak) |
Ha az aktuális konténereket frissíteni szeretné az új képre, akkor le kell állítani és törölni a régieket, majd azokat az új képpel kell indítani. A gyártási környezetben ilyen frissítéseket orchestrátorok, például Kubernetes, Docker Swarm vagy Docker Compose segítségével kezelnek, amelyek rolling update stratégiákat valósítanak meg.