İçeriğe geç
SaytPro
Bize yazın

Teknolojiler

Docker

Docker, yazılımları çalışması için gereken her şeyle birlikte "konteyner" adı verilen izole paketlerde çalıştıran açık kaynaklı bir platformdur. 2013 yılında Docker, Inc. tarafından yayınlandı ve bugün sunucularda uygulama dağıtmanın standart yöntemlerinden biri haline geldi.

GeliştiriciDocker, Inc.
İlk sürüm2013
LisansApache-2.0
Resmi sitedocker.com
Altyapı

Docker nedir?

Docker'ı anlamanın en iyi yolu gemi konteyneri benzetmesidir. Standart konteynerler icat edilmeden önce her yük gemiye kendi ambalajıyla yükleniyordu; yavaş ve sorunluydu. Standart konteyner ise içinde ne olursa olsun her gemiye, trene veya kamyona aynı şekilde yüklenir. Docker da yazılım için aynısını yapar: bir site veya uygulama, tüm bağımlılıklarıyla (çalışması için gereken kütüphaneler ve ayarlar) birlikte bir konteynere paketlenir ve bu konteyner her sunucuda aynı şekilde çalışır.

Bu yaklaşım, yazılım dünyasının meşhur "benim bilgisayarımda çalışıyordu" sorununu çözer. Yazılım genellikle geliştiricinin bilgisayarında çalışır ama sunucuda sürümler ve ayarlar farklı olduğu için hata verir. Docker konteynerinin içinde ortam her yerde aynıdır: dizüstünde test edilen konteyner, canlı sunucuda da değişiklik olmadan çalışır. Böylece sitenin yeni sürümünün yayına alınması (deploy) daha hızlı ve çok daha az riskli hale gelir.

Docker sık sık sanal makineyle karıştırılır ama aradaki fark büyüktür. Sanal makine her uygulama için ayrı ve eksiksiz bir işletim sistemi çalıştırır; bu da gigabaytlarca bellek ve disk demektir. Konteyner ise sunucunun mevcut işletim sistemi çekirdeğini paylaşır ve yalnızca uygulamayı ve bağımlılıklarını taşır. Bu yüzden konteynerler saniyeler içinde başlar ve tek bir sunucuda onlarcası rahatça çalışabilir.

Gerçek projeler genellikle birden fazla parçadan oluşur: web uygulaması, veritabanı, önbellek sunucusu vb. Docker Compose adlı araç, bu parçaların tamamını tek bir yapılandırma dosyasında tanımlayıp tek komutla başlatmayı sağlar. Docker'ın çekirdeği olan Docker Engine, Apache-2.0 lisansıyla açık kaynaklıdır; yani kendi sunucularınızda konteyner çalıştırmak için lisans ücreti ödenmez.

İşletmeniz için ne anlama geliyor?

Site sahibi için Docker'ın faydası doğrudan hissedilir: güncellemelerde "sunucuda bir şey bozuldu" durumları azalır, site başka bir sunucuya taşınırken saatlerce yeniden kurulum yerine konteynerler yeni sunucuda çalıştırılır ve sorun çıktığında önceki çalışan sürüme dakikalar içinde dönülebilir. Bunların hepsi daha az kesinti ve daha öngörülebilir bir hizmet demektir.

SaytPro bunu nasıl kullanıyor?

SaytPro'nun geliştirdiği siteler VPS sunucularında çalışır ve altyapı her projenin ölçeğine göre seçilir. Docker, birkaç servisten oluşan sistemlerde fayda sağlar: backend, veritabanı ve yardımcı servisler ayrı, tekrarlanabilir ortamlarda çalışır. Tek bir Next.js sitesi içinse onu doğrudan sunucuda bir süreç yöneticisiyle çalıştırmak çoğu zaman daha basit ve hafif bir yoldur.

Bu teknolojiyle sunduğumuz hizmetler

Sık sorulan sorular

Docker, yazılımları "konteyner" denen standart paketlerde çalıştıran bir platformdur. Gemi konteyneri gibi düşünün: içinde ne olursa olsun her gemiye aynı şekilde yüklenir. Docker konteyneri de siteyi gereken her şeyle birlikte paketler ve site her sunucuda aynı şekilde çalışır.

Konteyner, uygulamayı ve çalışması için gereken her şeyi (kütüphaneler, ayarlar, yapılandırma) bir arada tutan izole bir ortamdır. Sunucudaki diğer yazılımlardan ayrı çalıştığı için sürüm çakışmaları yaşanmaz ve tek makinede aynı anda onlarca konteyner sorunsuz çalışabilir.

Sanal makine her uygulama için ayrı ve eksiksiz bir işletim sistemi çalıştırır; bu gigabaytlarca disk ve bol RAM demektir. Docker konteyneri ise sunucunun işletim sistemi çekirdeğini paylaşır ve yalnızca uygulamayı taşır. Bu yüzden konteynerler saniyeler içinde başlar ve bir sunucuya sanal makinelere kıyasla çok daha fazla konteyner sığar.

Docker'ın çekirdeği olan Docker Engine açık kaynaklıdır ve Apache-2.0 lisansıyla ücretsiz kullanılabilir; sunucuda konteyner çalıştırmak için lisans ücreti gerekmez. Yalnızca geliştirici masaüstü uygulaması olan Docker Desktop, büyük şirketlerde ticari kullanım için abonelik ister; bu durum site barındırmayı etkilemez.

Bu sorun, yazılımın geliştiricinin bilgisayarında çalışıp sunucuda hata vermesi durumudur; nedeni genellikle farklı sürümler ve ayarlardır. Docker, ortamı konteynerin içine "dondurduğu" için test edilen ortamla canlı ortam birebir aynı olur. Yeni sürüm yayına alınırken beklenmedik sürprizler ciddi ölçüde azalır.

Pratikte üç fayda var: güncellemeler daha stabil geçer çünkü test edilen ortam canlı ortamla aynıdır; başka sunucuya veya hostinge taşınmak günler değil saatler sürer; bir sorun çıktığında önceki çalışan sürüme hızla dönülebilir. Sonuç olarak siteniz daha az kesinti yaşar.

Docker Compose, birden fazla konteynerden oluşan uygulamaları yönetmek için kullanılan bir araçtır. Tipik bir site web uygulaması, veritabanı ve önbellekten oluşur; Compose bunların hepsini tek bir YAML dosyasında (düz metin yapılandırma formatı) tanımlar ve tek komutla başlatır. Küçük ve orta ölçekli projelerde yaygın olarak kullanılır.

Docker konteynerleri oluşturur ve çalıştırır; Kubernetes ise yüzlerce konteyneri çok sayıda sunucuda otomatik yöneten bir orkestrasyon sistemidir. Küçük ve orta ölçekli siteler için Docker (çoğunlukla Docker Compose ile) tamamen yeterlidir; Kubernetes büyük ölçekli, çok sunuculu sistemler içindir ve ciddi karmaşıklık ekler.

Konteynerler uygulamaları birbirinden izole eder ve bu güvenliğe katkı sağlar: bir uygulamadaki sorun diğerlerine kolayca yayılmaz. Ancak Docker otomatik güvenlik demek değildir; imajların (konteyner şablonlarının) güvenilir kaynaklardan alınması, düzenli güncellenmesi ve konteynerlerin sınırlı yetkilerle çalıştırılması gerekir.

Docker, 2013 yılında Docker, Inc. şirketi (eski adıyla dotCloud) tarafından Solomon Hykes önderliğinde yayınlandı. Konteyner teknolojisinin kendisi Linux'ta daha önce de vardı ama Docker onu basit ve herkes için erişilebilir hale getirdi; birkaç yıl içinde sektör standardına dönüştü.

Evet, projenin yapısına göre. Birkaç servisten oluşan sistemlerde Docker ortamları birbirinden ayırır: güncellemeler minimum kesintiyle yayına alınır ve bir proje diğerini etkilemez. Tek bir Next.js sitesini ise sunucuda bir süreç yöneticisiyle doğrudan çalıştırmak çoğu zaman daha basittir.

Bu teknoloji genellikle bunlarla birlikte çalışır.

Milyonlarca siteyi ayakta tutan yüksek performanslı web sunucusu ve reverse proxy.

  • Altyapı

Siteniz için kaynakları size ayrılmış, tam kontrollü sanal sunucu.

  • Altyapı

Kodun tüm değişiklik geçmişini kaydeden ve ekip çalışmasını mümkün kılan versiyon kontrol sistemi.

  • Araç