Sobes.tech
Middle

Rasmda o'zgartirishlar kiritilgach, nima bo'ladi?

sobes.tech AI

AIdan javob

Rasmda o‘zgartirishlar kiritilgach, rasm o‘zi yangi va alohida versiyaga aylanadi. Bu rasm asosida yangi konteyner ishga tushirilganda, konteyner o‘zgartirilgan versiyani, ya’ni qo‘llanilgan o‘zgartirishlarni aks ettirgan versiyani ishlatadi. Eski konteynerlar, avvalgi versiyadagi rasm asosida ishga tushirilganlar, o‘z holatini saqlab qoladi va yangi rasm asosida to‘xtatilgach va qayta ishga tushirilgachgina eski versiya bilan ishlashda davom etadi. Boshqacha aytganda, rasmda qilingan o‘zgartirishlar allaqachon ishga tushirilgan konteynerlarga ta’sir qilmaydi.

Docker misolida hayot aylanishini ko‘rib chiqamiz:

  1. Dockerfile qurilishi: Siz Dockerfileda o‘zgartirishlar qilasiz.

    # Yangilangan Dockerfile
    FROM ubuntu:latest
    RUN apt-get update && apt-get install -y nginx
    COPY index.html /var/www/html/
    EXPOSE 80
    
  2. Rasm qurilishi: Siz qurish buyruqini bajarishingiz.

    # Yangi versiya rasmini yaratish
    docker build -t my-webserver:v2 .
    

    Docker avvalgi qatlamlar ustiga o‘zgartirishlar bilan yangi qatlam yaratadi. my-webserver:v2 endi yangi rasmga ishora qiladi.

  3. Yangi konteyner ishga tushirish: Siz yangi konteynerni ishga tushirasiz.

    # Yangi versiya rasmiga asoslangan konteynerni ishga tushirish
    docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2
    

    Bu konteyner yangi rasm versiyasidan foydalanadi.

  4. Mavjud konteynerlar: Masalan, my-webserver:v1 asosida ishga tushirilgan konteynerlar eski ma’lumotlar va konfiguratsiya bilan ishlashda davom etadi.

Amal Natija Eski konteynerlarga ta’siri
Dockerfile o‘zgartirishlari Rasmni ta’riflovchi kod o‘zgartiriladi. Yo‘q
Rasm qurilishi (docker build) Yangi, noyob ID bilan rasm yaratiladi. Yo‘q
Rasmga teg (docker tag) Yangi rasmga alias beriladi. Yo‘q
Yangi konteyner ishga tushirish Yangi konteyner yangi rasmni ishlatadi. Yo‘q
Eski konteynerni qayta ishga tushirish Eski konteyner eski rasm bilan ishga tushadi. Yo‘q (standart)
Eski rasmni o‘chirish Rasm o‘chiriladi, lekin unga asoslangan konteynerlar saqlanadi. Yo‘q (konteynerlar saqlanadi)

Agar ishga tushirilgan konteynerlarni yangi rasm versiyasiga yangilash kerak bo‘lsa, eski konteynerlarni to‘xtatib, o‘chirish va keyin yangilangan rasm bilan yangi konteynerlarni ishga tushirish kerak. Ishlab chiqarish muhitida, bunday yangilanishlarni boshqarish uchun Kubernetes, Docker Swarm yoki Docker Compose kabi orkestratorlar ishlatiladi va ular rolling update strategiyalarini amalga oshiradi.