Günlük hayattan benzetme: image ve container
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.
Ç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 ve gerçekte ne kadar Docker bilgisi gerekir
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.
Çoğu zaman beklediğinizden az bilgiye ihtiyacınız var. 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 ve dürüst sınırları
Ö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.
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
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.
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.
Bir docker-compose.yml içe aktarın; web, worker, veritabanı ve önbellek tek adımda birlikte çalışsın.
Sık sorulan sorular
Docker öğrenmesi zor mu?
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.
Platformu Docker olmadan kullanabilir miyim?
Evet. WordPress ve PHP hosting hiç Docker gerektirmez. Docker yalnızca özel container uygulamalarında devreye girer.
Image'imi CDN.com.tr'de inşa edebilir miyim?
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.