17. Virtualizatsiya, containerlar va DevOps — 15 ta savol-javob
Avval javobni o'zingiz ayting, so'ng ochib solishtiring.
1. Konteyner nima? Virtual mashinadan farqi qanday?
Javob
Konteyner — host kernelini ulashadigan, lekin izolyatsiyalangan jarayon (yoki jarayonlar guruhi): u alohida mashina emas. VM esa gipervizor ustida o'z kerneli va to'liq OT bilan ishlaydi. Konteyner yengil, sekundlarda ishga tushadi va kam xotira oladi; izolyatsiyasi VM'nikidan zaifroq, chunki kernel umumiy. Linux konteynerlari Linux kernelini talab qiladi.
2. Konteynerni mumkin qiladigan Linux imkoniyatlari qaysilar?
Javob
Namespaces (jarayon nimani ko'rishini izolyatsiya qiladi) va cgroups (jarayon qancha resurs olishini cheklaydi), bundan tashqari fayl tizimi qatlamlari (overlay), capabilities, seccomp va SELinux/AppArmor. Konteyner — shu mexanizmlar bilan o'ralgan oddiy jarayon: ps hostda uni oddiy jarayon sifatida ko'rsatadi.
3. Namespace turlari qaysilar?
Javob
pid (jarayonlar daraxti), net (tarmoq interfeyslari, portlar), mnt (mount nuqtalari), uts (hostname), ipc, user (UID moslashtirish) va cgroup. Har bir namespace bitta resurs turi uchun alohida ko'rinish beradi; masalan, konteynerda o'z jarayoni PID 1 bo'lib ko'rinadi, hostda esa boshqa raqam.
4. cgroups nima qiladi?
Javob
Control groups jarayonlar guruhi uchun CPU, xotira, I/O va jarayonlar sonini hisoblaydi va cheklaydi. Konteyner xotira chegarasidan oshsa, kernel OOM killer bilan uni o'ldiradi (OOMKilled). systemd ham xizmatlarni cgroups orqali kuzatadi va MemoryMax=, CPUQuota= kabi cheklovlarni shu orqali beradi.
5. Image va container farqi nima?
Javob
Image — o'zgarmas, qatlamli shablon (dastur, kutubxonalar, sozlamalar). Container — image'dan ishga tushirilgan jarayon (instansiya) va uning yozish mumkin bo'lgan ustki qatlami. Bitta image'dan ko'p container ishga tushirish mumkin. Container o'chirilganda uning yozish qatlamidagi ma'lumot yo'qoladi.
6. OCI nima?
Javob
Open Container Initiative — image formati va runtime (ishga tushirish) bo'yicha ochiq standartlar. Shu sabab Docker, Podman va boshqa vositalar bir xil image'larni ishlata oladi va bir-biriga qulflanib qolmaydi.
7. Docker va Podman farqi nima?
Javob
Docker — doimiy ishlaydigan root daemon (dockerd) modeli: barcha buyruqlar shu daemon orqali o'tadi. Podman — daemonsiz (har bir container oddiy jarayon sifatida), rootless rejimda root huquqisiz ishlay oladi, CLI Docker'ga deyarli mos. Rootless xavfsizlik jihatidan afzal: container buzilsa, hujumchi hostda root bo'lmaydi.
8. Volume nima? Nega ma'lumotni containerning ichida saqlamaslik kerak?
Javob
Container yozish qatlami vaqtinchalik: o'chirilsa, ma'lumot yo'qoladi. Volume (yoki bind mount) ma'lumotni container hayotidan tashqarida, hostda saqlaydi, bir nechta containerga ulash mumkin. Ma'lumotlar bazalari va yuklamalar volume'ga yoziladi. Bind mount hostdagi aniq yo'lni ulaydi (ruxsatlar va UID mosligiga e'tibor bering).
9. Dockerfile qatlamlari va keshlash qanday ishlaydi?
Javob
Dockerfile'ning har bir buyrug'i yangi qatlam yaratadi. Qatlam o'zgarmasa, kesh ishlatiladi; bir qatlam o'zgarsa, undan keyingilari qayta quriladi. Shu sabab kamdan-kam o'zgaradigan qadamlar (bog'liqliklarni o'rnatish) tepada, tez-tez o'zgaradigan (kodni nusxalash) pastda turadi. Qatlamga qo'yilgan maxfiy ma'lumot image tarixida qoladi, hatto keyin o'chirilsa ham.
10. Konteyner nima uchun to'liq xavfsizlik chegarasi emas?
Javob
Barcha containerlar bitta kernelni ulashadi: kernel zaifligi izolyatsiyani buzishi mumkin. Container ichida root bo'lsa va --privileged yoki ortiqcha capabilities berilgan bo'lsa, host uchun xavf yuqori. Himoya: rootless/non-root foydalanuvchi, minimal image, capabilities cheklash, read-only fayl tizimi, seccomp/AppArmor/SELinux va image'larni yangilab, skanerlab turish.
11. CI/CD nima va Linux uning ichida qanday rol o'ynaydi?
Javob
CI (uzluksiz integratsiya) — har bir o'zgarishda kodni avtomatik yig'ish va sinash; CD (yetkazib berish/joylashtirish) — tasdiqlangan o'zgarishni avtomatik tarqatish. Pipeline'ni bajaradigan runner'lar asosan Linux hostlar yoki containerlar; shell skriptlar, paket menejerlar, ruxsatlar va jurnallar kundalik ish. Linux bilimi pipeline xatolarini tashxislash uchun zarur.
12. CI/CD'da maxfiy ma'lumotlar (secrets) bilan qanday ishlanadi?
Javob
Parol, token va kalitlar kodda yoki loglarda bo'lmasligi kerak. Ularni provayderning maxfiy ombori (secret store) yoki vault orqali ish vaqtida muhit o'zgaruvchisi sifatida uzatish, loglarda maskalash, imkon qadar qisqa muddatli va minimal huquqli tokenlar. Pipeline buzilsa, secrets eng qimmatli nishon bo'lgani uchun, fork va uchinchi tomon action'larga ishonchni cheklash zarur.
13. Infrastructure as Code (IaC) nima? Deklarativ va imperativ farqi?
Javob
IaC — infratuzilmani qo'lda emas, kod (versiya nazoratidagi fayllar) orqali tavsiflash va boshqarish: takrorlanuvchan, tekshiriladigan va ko'rib chiqiladigan. Deklarativ yondashuv "qanday bo'lishi kerak"ni tasvirlaydi (Terraform), tizim farqni o'zi hisoblaydi. Imperativ yondashuv "nima qilish kerak"ni qadamlar bilan beradi (skript). Idempotentlik — takroriy ishga tushirish bir xil natija berishi.
14. Ansible va Terraform farqi nima?
Javob
Terraform — asosan infratuzilmani yaratish (cloud resurslar: serverlar, tarmoqlar) uchun deklarativ, holatni (state) saqlaydi. Ansible — mavjud serverlarni sozlash (paket, fayl, xizmat) uchun, agentsiz (SSH orqali) va YAML playbook'lar bilan ishlaydi. Ular ko'pincha birga ishlatiladi: Terraform serverni yaratadi, Ansible uni sozlaydi.
15. Configuration drift nima va monitoring/logging avtomatlashtirishdagi o'rni qanday?
Javob
Drift — serverning haqiqiy holati kod bilan tavsiflangan holatdan qo'lda o'zgartirishlar tufayli uzoqlashishi. Oldini olish: qo'lda o'zgartirishni taqiqlash, o'zgarishlarni faqat kod orqali kiritish, muntazam solishtirish. Monitoring (metrikalar), logging (hodisalar) va alerting tizimi holatni ko'rinadigan qiladi; ularsiz avtomatlashtirish xatoni tez va keng tarqatadi, lekin payqamaydi.