Əsas məzmuna keçid
SaytPro
Bizə yazın

Texnologiyalar

Docker

Docker: proqram təminatını bütün lazımi fayl və parametrləri ilə birlikdə "konteyner" adlanan izolyasiya olunmuş paketlərdə işlədən açıq mənbəli platformadır. 2013-cü ildə Docker, Inc. tərəfindən təqdim olunub və bu gün serverlərdə tətbiq yerləşdirməyin standart üsullarından biridir.

YaradıcıDocker, Inc.
İlk buraxılış2013
LisenziyaApache-2.0
Rəsmi saytdocker.com
İnfrastruktur

Docker nədir?

Docker-i başa düşmək üçün ən yaxşı bənzətmə gəmi konteyneridir. Konteynerlər ixtira olunana qədər hər yük gəmiyə ayrı-ayrı qablarda yüklənirdi və bu, yavaş və problemli idi. Standart konteyner isə içində nə olmasından asılı olmayaraq istənilən gəmiyə, qatara və ya yük maşınına eyni cür yüklənir. Docker də proqramla eyni işi görür: sayt və ya tətbiq bütün asılılıqları (işləməsi üçün lazım olan kitabxana və parametrlər) ilə birlikdə bir konteynerə qablaşdırılır və bu konteyner istənilən serverdə eyni cür işləyir.

Bu yanaşma proqramçılıqda məşhur "mənim kompüterimdə işləyirdi" problemini həll edir. Adətən proqram developerin kompüterində işləyir, amma serverdə fərqli versiyalar və parametrlər olduğu üçün xəta verir. Docker konteynerində isə mühit hər yerdə eynidir: developerin noutbukunda test olunan konteyner serverdə də dəyişiklik olmadan işləyir. Nəticədə saytın yeni versiyasının yayımlanması (deploy) daha az riskli və daha sürətli olur.

Docker çox vaxt virtual maşınla qarışdırılır, amma fərq böyükdür. Virtual maşın hər tətbiq üçün ayrıca tam əməliyyat sistemi işlədir və bu, çoxlu yaddaş və resurs tələb edir. Konteyner isə serverin mövcud əməliyyat sisteminin nüvəsini paylaşır və yalnız tətbiqin özünü və asılılıqlarını daşıyır. Buna görə konteynerlər saniyələr içində başlayır və eyni serverdə onlarla konteyner rahat işləyə bilir.

Real layihələrdə sayt adətən bir neçə hissədən ibarət olur: veb tətbiq, verilənlər bazası, keş serveri və s. Docker Compose adlı alət bu hissələrin hamısını bir konfiqurasiya faylında təsvir edib bir əmrlə işə salmağa imkan verir. Docker-in nüvəsi (Docker Engine) Apache-2.0 lisenziyası ilə açıq mənbəlidir, yəni ondan istifadə üçün lisenziya haqqı ödənilmir.

Biznesiniz üçün nə deməkdir?

Sayt sahibi üçün Docker-in faydası birbaşa hiss olunur: yeniləmələr zamanı "serverdə nəsə xarab oldu" halları azalır, sayt bir serverdən digərinə köçürüləndə saatlarla yenidən qurulma əvəzinə konteynerlər sadəcə yeni serverdə işə salınır. Problem yarandıqda əvvəlki işlək versiyaya qayıtmaq da dəqiqələr çəkir. Bu, daha az fasilə (downtime) və daha proqnozlaşdırıla bilən xidmət deməkdir.

SaytPro bundan necə istifadə edir?

SaytPro-nun qurduğu saytlar VPS serverlərində işləyir və infrastruktur hər layihənin ölçüsünə görə seçilir. Docker bir neçə servisdən ibarət sistemlərdə faydalıdır: backend, verilənlər bazası və köməkçi servislər ayrı, təkrarlana bilən mühitlərdə işləyir. Tək Next.js saytı üçün isə proses-menecerlə birbaşa serverdə işləmək çox vaxt daha sadə və yüngül yoldur.

Bu texnologiya ilə qurduğumuz xidmətlər

Tez-tez verilən suallar

Docker proqramları "konteyner" adlanan standart paketlərdə işlədən platformadır. Gəmi konteyneri kimi düşünün: içində nə olmasından asılı olmayaraq istənilən gəmiyə eyni cür yüklənir. Docker konteyneri də saytı bütün asılılıqları ilə birlikdə qablaşdırır və o, istənilən serverdə eyni cür işləyir.

Konteyner: tətbiqin özünü və işləməsi üçün lazım olan hər şeyi (kitabxanalar, parametrlər, konfiqurasiya) bir yerdə saxlayan izolyasiya olunmuş mühitdir. Serverdəki digər proqramlardan ayrı işlədiyi üçün versiya konfliktləri yaranmır. Bir serverdə eyni anda çoxlu konteyner problemsiz işləyə bilir.

Virtual maşın hər tətbiq üçün ayrıca tam əməliyyat sistemi işlədir: bu, gigabaytlarla yer və çox resurs deməkdir. Docker konteyneri isə serverin mövcud əməliyyat sisteminin nüvəsini paylaşır və yalnız tətbiqi daşıyır. Nəticədə konteynerlər saniyələr içində başlayır və eyni serverə virtual maşınlardan qat-qat çox konteyner sığır.

Docker-in nüvəsi olan Docker Engine açıq mənbəlidir və Apache-2.0 lisenziyası ilə pulsuz istifadə oluna bilər: server üzərində konteyner işlətmək üçün heç bir ödəniş tələb olunmur. Yalnız Docker Desktop adlı masaüstü proqram böyük şirkətlərdə kommersiya istifadəsi üçün abunə tələb edir, amma bu, sayt hostinqinə aid deyil.

Bu, proqramın developerin kompüterində işləyib serverdə xəta verməsi halıdır: səbəb adətən fərqli versiyalar və parametrlərdir. Docker mühiti konteynerin içinə "dondurduğu" üçün test olunan mühitlə serverdəki mühit eyni olur. Beləliklə, saytın yeni versiyası serverə çıxanda gözlənilməz sürprizlər xeyli azalır.

Praktikada üç fayda var: saytın yeniləmələri daha stabil keçir (test olunan mühit serverdəki ilə eynidir), hostinq və ya server dəyişəndə köçürmə günlər yox, saatlar çəkir, problem çıxanda əvvəlki işlək versiyaya sürətlə qayıtmaq olur. Bunların hamısı saytın daha az dayanması deməkdir.

Docker Compose bir neçə konteynerdən ibarət tətbiqi idarə etmək üçün alətdir. Sayt adətən veb tətbiq, verilənlər bazası və keş kimi hissələrdən ibarətdir: Compose bunların hamısını bir YAML faylında (sadə mətn formatlı konfiqurasiya) təsvir edib bir əmrlə işə salmağa imkan verir. Kiçik və orta layihələrdə çox geniş istifadə olunur.

Docker konteynerləri yaradıb işlədir, Kubernetes isə yüzlərlə konteyneri çoxlu server üzərində avtomatik idarə edən orkestrasiya sistemidir. Kiçik və orta saytlar üçün Docker (çox vaxt Docker Compose ilə) tam kifayətdir; Kubernetes böyük miqyaslı, çoxserverli sistemlər üçün nəzərdə tutulub və əlavə mürəkkəblik gətirir.

Konteynerlər tətbiqləri bir-birindən izolyasiya edir və bu, təhlükəsizliyə müsbət təsir edir: bir tətbiqdəki problem digərlərinə asanlıqla yayılmır. Amma Docker avtomatik təhlükəsizlik demək deyil: image-lərin (konteyner şablonlarının) etibarlı mənbədən götürülməsi, mütəmadi yenilənməsi və konteynerlərin məhdud hüquqlarla işlədilməsi vacibdir.

Docker 2013-cü ildə Docker, Inc. şirkəti tərəfindən (əvvəlki adı dotCloud) təqdim olunub və Solomon Hykes-in rəhbərliyi ilə hazırlanıb. Konteyner texnologiyasının özü Linux-da daha əvvəl mövcud idi, amma Docker onu sadə və hamı üçün əlçatan etdi. Qısa müddətdə sənaye standartına çevrildi.

Bəli. Bu, layihənin quruluşundan asılıdır: bir neçə servisdən ibarət sistemlərdə Docker mühitləri bir-birindən ayırmağa kömək edir, tək Next.js saytı üçün isə proses-menecerlə birbaşa serverdə işləmək çox vaxt daha sadədir. Bu, yeniləmələrin minimal fasilə ilə yayımlanmasına və bir layihənin digərinə təsir etməməsinə imkan verir.

Bu texnologiya adətən bunlarla birlikdə işləyir.

Milyonlarla saytı işlədən yüksək performanslı veb server və reverse proxy.

  • İnfrastruktur

Saytınız üçün ayrılmış resurslu, tam nəzarətli virtual server.

  • İnfrastruktur

Kodun bütün dəyişiklik tarixçəsini saxlayan və komanda işini mümkün edən versiya nəzarəti sistemi.

  • Alət