Sobes.tech
Middle

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:

  1. 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
    
  2. 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:v2 mostantól az új képre mutat.

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

    Ez a konténer az új képet fogja használni.

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