Sobes.tech
Junior

Docker bilan tajribangiz qanday?

sobes.tech AI

AIdan javob

Dunyo bo'ylab turli loyihalarda Dockerni faol ravishda 5 yildan ortiq foydalanish.

Tajribaga quyidagilar kiradi:

  • Dockerfile ishlab chiqish: Web, mikroservislar, ma'lumotlar bazalari va boshqalar uchun optimallashtirilgan va ko'p bosqichli Dockerfile'lar yaratish.
  • Rasmlarni boshqarish: Docker Hub, shaxsiy repozitoriyalar (GitLab Registry, Nexus) bilan ishlash, belgilash, versiyalash, ishlatilmaydigan rasmlarni tozalash.
  • Konteynerlar bilan ishlash: Ishga tushirish, to'xtatish, qayta ishga tushirish, holatini monitoring qilish, loglarni ko'rish, konteyner ichida buyruqlarni bajarish (docker exec).
  • Docker Compose: Ko'p konteynerli ilovalarni aniqlash va ishga tushirish uchun, xizmatlarni orkestratsiya qilish, tarmoqlar va hajmlarni boshqarish.
  • Docker tarmoqlari: Turli tarmoq drayverlarini (bridge, host, overlay) tushunish va sozlash, xizmatlarni izolyatsiya qilish uchun maxsus tarmoqlar yaratish.
  • Docker hajmlari: Ma'lumotlarni saqlash, host va konteyner o'rtasida fayllarni almashish uchun nomlangan hajmlar va bind montajlardan foydalanish.
  • Docker xavfsizligi: Konteynerlarni izolyatsiya qilish asoslarini tushunish, rootless Docker'dan foydalanish (mumkin bo'lsa), rasmlarni zaifliklar uchun skanerlash.
  • CI/CD bilan integratsiya: Docker rasmlarini qurish va nashr qilishni CI/CD pipeline'lariga qo'shish (Jenkins, GitLab CI, GitHub Actions).
  • Orkestratsiya (asosiy bilimlar): Kubernetes tamoyillarini umumiy tushunish (konteynerlarni joylashtirish, pody, replikatsiya, xizmatlar), minikube/Kind yordamida oddiy ilovalarni test qilish.

Docker Compose misollari:

# docker-compose.yaml
version: '3.8'

services:
  app:
    build: .  # Joriy katalogdan rasmni qurish
    ports:
      - "80:80" # Hostning 80 portini konteynerning 80 portiga yo'naltirish
    environment:
      DATABASE_URL: postgres://user:password@db:5432/mydatabase # Muhit o'zgaruvchilari
    depends_on:
      - db # db xizmatiga bog'liqlik

  db:
    image: postgres:14 # Standart postgres rasmidan foydalanish
    volumes:
      - db_data:/var/lib/postgresql/data # Ma'lumotlar uchun doimiy hajm
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydatabase

volumes:
  db_data: # Nomlangan hajmni ta'riflash