Əsas məzmuna keçin

Docker

  • Konteyner: Tətbiqetməni işə salmaq üçün lazım olan hər şeyi ehtiva edən yüngül, müstəqil, icra oluna bilən proqram paketi.
  • Image (Təsvir): Konteynerləri yaratmaq üçün istifadə olunan yalnız oxunan şablon, tətbiqetmə kodunu, kitabxanaları, asılılıqları, alətləri və digər faylları ehtiva edir.
  • Dockerfile: Docker image qurmaq üçün təlimatları ehtiva edən mətn sənədi.
  • Docker Hub: Konteyner təsvirlərini paylaşmaq və idarə etmək üçün bulud əsaslı qeydiyyat xidməti.
  • Docker Compose: YAML faylları istifadə edərək çox-konteynerli Docker tətbiqetmələrini təyin etmək və işə salmaq üçün alət.
  • Docker Swarm: Docker üçün yerli klasterləşdirmə və orkestraiya həlli.
  • Volume (Həcm): Konteyner həyat dövrü xaricində mövcud olan daimi məlumat saxlama mexanizmi.
  • Şəbəkə: Konteynerlərə bir-biri ilə və xarici dünya ilə əlaqə qurmağa imkan verən kommunikasiya sistemi.
  • Registry (Qeydiyyat): Docker təsvirləri üçün saxlama və paylaşdırma sistemi.

Əsas Anlayışlar

Konteyner vs Virtual Maşın

XüsusiyyətKonteynerVirtual Maşın
VirtuallaşdırmaOS səviyyəsində virtuallaşdırmaAparat səviyyəsində virtuallaşdırma
ÖlçüYüngül (MB-lar)Ağır (GB-lar)
Başlanma vaxtıSaniyələrDəqiqələr
PerformansDemək olar ki, doğmaHipervisor səbəbindən əlavə yük
İzolyasiyaProses izolyasiyasıTam izolyasiya
OSHost OS nüvəsini paylaşırTam OS tələb edir
Resurs istifadəsiSəmərəliDaha çox resurs istehlakı

Docker Arxitekturası

Docker müştəri-server arxitekturasından istifadə edir:

  • Docker Müştərisi: Docker ilə qarşılıqlı təsir üçün əmr sətrəsi interfeysi
  • Docker Daemon: Docker obyektlərini idarə edən arxa plan xidməti
  • Docker Registry: Docker təsvirlərini saxlayır
  • Docker Obyektləri: Təsvirlər, konteynerlər, şəbəkələr, həcmlər və s.

Ümumi Docker Əmrləri

# Konteyner işə salın
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

# İşləyən konteynerləri sadalayın
docker ps

# Bütün konteynerləri sadalayın (dayandırılmış da daxil olmaqla)
docker ps -a

# Dockerfile-dan təsvir qurun
docker build -t image_name:tag .

# Docker Hub-dan təsvir çəkin
docker pull image_name:tag

# Docker Hub-a təsvir göndərin
docker push image_name:tag

# İşləyən konteyneri dayandırın
docker stop container_id

# Konteyneri silin
docker rm container_id

# Təsviri silin
docker rmi image_id

# Konteyner loglarına baxın
docker logs container_id

İstifadə Halları

  • Mikroxidmətlər Arxitekturası: Fərdi xidmətləri müstəqil şəkildə yerləşdirmək və miqyaslamaq
  • Davamlı İnteqrasiya/Davamlı Yerləşdirmə: İnkişaf, test və istehsal arasında ardıcıl mühitlər
  • İnkişaf Mühitləri: İzolə edilmiş, təkrarlana bilən inkişaf mühitlərinin yaradılması
  • Tətbiqetmə İzolyasiyası: Eyni hostda müxtəlif asılılıqları olan çoxlu tətbiqetmələrin işlədilməsi
  • Köhnə Tətbiqetmə Miqrasiyası: Asanlaşdırılmış idarəetmə üçün köhnə tətbiqetmələrin konteynerləşdirilməsi
  • Hibrid Bulud Yerləşdirmələri: Müxtəlif bulud provayderlərində ardıcıl yerləşdirmə

Ən Yaxşı Təcrübələr

  • Mümkün olduqda rəsmi baza təsvirlərindən istifadə edin
  • Təsvirləri kiçik və məqsədyönlü saxlayın
  • Təsvir ölçüsünü azaltmaq üçün çox mərhələli qurmaları istifadə edin
  • Konteynerləri root olaraq işlətməyin
  • Daimi məlumatlar üçün həcmlərdən istifadə edin
  • Sağlamlıq yoxlamalarını tətbiq edin
  • Təsvirləri düzgün etiketləyin ("latest"-ə etibar etməyin)
  • Çox-konteynerli tətbiqetmələr üçün Docker Compose istifadə edin
  • Təsvirləri zəifliklərdən yoxlayın