Loading...
Temeller · 7 dk okuma

Docker nedir (ve bana gerekli mi)?

Docker, bir uygulamayı çalışması için ihtiyaç duyduğu her şeyle birlikte — kod, çalışma ortamı, kütüphaneler ve ayarlar — container adı verilen tek ve taşınabilir bir birime paketlemenin yoludur. Container, sizin bilgisayarınızda, bir meslektaşınızın makinesinde ve CDN.com.tr üzerinde aynı şekilde davranır. Faydalanmak için Docker uzmanı olmanıza gerek yok: çoğu zaman bize sadece mevcut bir image'i gösterirsiniz.

Docker nedir (ve bana gerekli mi)?

Günlük hayattan benzetme

Bir nakliye konteynerini düşünün. İçine ne koyarsanız koyun, standart bir biçimi vardır; bu yüzden herhangi bir gemi, kamyon ya da vinç içeriğine aldırmadan onu taşıyabilir. Docker container'ı yazılım için aynısını yapar: uygulamanızı ve bağımlılıklarını standart bir pakete sarar; böylece uyumlu herhangi bir sistem onu birebir aynı şekilde çalıştırabilir — "benim makinemde çalışıyordu" sürprizleri olmadan.

Image ile container farkı

Çoğu kafa karışıklığına iki terim yol açar. "Image" plandır — uygulamanızın ve ortamının donmuş bir anlık görüntüsü. "Container" ise o image'den oluşturulan, canlı ve çalışan bir örnektir. Tek bir image'den birçok container başlatabilirsiniz; tıpkı tek bir şablondan bir belgenin birçok kopyasını açabildiğiniz gibi. Image'ler genellikle bir "registry"de (Docker Hub gibi ya da özel bir tanesinde) saklanır ve gerektiğinde çekilir.

docker-compose ne işe yarar

Gerçek uygulamalar nadiren tek parçadır — bir web uygulamanız, bir arka plan işçiniz, bir veritabanınız ve bir önbelleğiniz olabilir. Bir docker-compose.yml dosyası bütün bu "servisleri" ve nasıl bağlandıklarını listeler; böylece tüm yığın tek bir tanımla birlikte başlayabilir. CDN.com.tr'de bir compose dosyasını içe aktarabilirsiniz; her servis yönetilen bir uygulamaya, veritabanları ve önbellekler ise yönetilen eklentilere dönüşebilir.

Gerçekten Docker'a ihtiyacınız var mı?

Çoğu zaman beklediğinizden az. WordPress ya da bir PHP sitesi çalıştırıyorsanız, hiç Docker bilgisine ihtiyacınız yok — o platformlar tıkla-çalıştır şeklindedir. Docker yalnızca özel bir uygulama çalıştırmak istediğinizde önemlidir. O zaman bile, birçok uygulamanın adıyla kullanabileceğiniz hazır bir image'i ya da içe aktarabileceğiniz bir docker-compose dosyası vardır; kendiniz Docker yazmanız gerekmez.

CDN.com.tr'de nasıl çalışır

Özel bir uygulama çalıştırmak için bize bir image verirsiniz (örneğin "nginx" gibi herkese açık bir image ya da bir registry'deki kendinizinki) veya bir docker-compose dosyasını içe aktarırsınız. Platform image'i çeker, çalıştırır, otomatik HTTPS'li bir URL verir ve sağlıklı tutar. Ortam değişkenlerini, ölçeklemeyi ve yeniden başlatmaları panelden yönetirsiniz — sunucu yönetimi yok ve image'leri platformun kendisinde inşa etmenize gerek yok.

Birkaç dürüst sınır

Platform container'larınızı çalıştırır ama image inşa edeceğiniz ya da Docker içinde Docker çalıştıracağınız bir yer değildir ve ham herkese açık TCP portları sunmaz (herkese açık erişim HTTP(S); servisler arası dahili trafik özel kalır). Çoğu web uygulaması, API, worker ve araç için tam da istediğiniz şey budur; image inşa eden bir CI sistemi içinse, başka bir yerde inşa edip sonucu buraya yayına alırsınız.

Docker burada size ne zaman yardımcı olur

Hazır bir aracı çalıştırın

RabbitMQ ya da Jenkins gibi bir şeyi image adıyla yayına alın; verisi yeniden başlatmalarda korunsun diye kalıcı bir volume ile.

Kendi uygulamanızı gönderin

Image'inizi kendi pipeline'ınızda inşa edin, bir registry'ye gönderin ve burada bir URL ve HTTPS ile çalıştırın.

Tüm bir yığını getirin

Bir docker-compose.yml içe aktarın; web, worker, veritabanı ve önbellek tek adımda birlikte çalışsın.

Sık sorulan sorular

Temelleri basittir: image bir şablon, container ise çalışan bir kopyadır. CDN.com.tr'yi kullanmak için çoğunlukla yalnızca bir image adı ya da bir compose dosyası sağlarsınız — nadiren kendiniz Docker yazmanız gerekir.

Evet. WordPress ve PHP hosting hiç Docker gerektirmez. Docker yalnızca özel container uygulamalarında devreye girer.

Bir registry'den — Docker Hub gibi herkese açık bir tanesinden ya da panelde ekleyeceğiniz kimlik bilgileriyle özel bir registry'den. Platform image'i çeker ve çalıştırır.

Hayır — platform image'leri çalıştırır, inşa etmez (Docker-in-Docker yok). Kendi pipeline'ınızda ya da yerelde inşa edin, bir registry'ye gönderin, sonra burada yayına alın.

Evet, uygulama için kalıcı bir volume açarsanız ya da durum bilgisi içeren veriler için yönetilen bir veritabanı/Redis eklentisi kullanırsanız.