Docker Nedir?
İngilizce: Docker
Docker, uygulama kodunu ve bağımlılıklarını konteyner imajlarında paketleyerek geliştirme, test ve üretimde aynı şekilde çalıştırır.
Docker Nedir?
Docker, bir uygulamanın çalışmak için ihtiyaç duyduğu runtime, kütüphane, sistem paketleri ve ayarları tek bir konteyner imajında toplar. Bu imajdan üretilen konteyner, geliştiricinin bilgisayarında, test sunucusunda veya bulut ortamında aynı komutla çalışabilir.
Klasik sunucu kurulumunda “benim bilgisayarımda çalışıyordu” sorunu sık görülür; çünkü işletim sistemi, paket sürümü veya ortam değişkeni farklı olabilir. Docker bu farkları uygulamanın çevresiyle birlikte paketleyerek azaltır.
Docker Nasıl Çalışır?
- Dockerfile: İmajın nasıl üretileceğini tarif eden kurulum dosyasıdır.
- Image: Uygulama ve bağımlılıklarının değişmez paketidir.
- Container: İmajdan çalışan, izole edilmiş uygulama sürecidir.
- Registry: Docker Hub veya özel registry gibi imajların saklandığı depodur.
- Volume ve network: Kalıcı dosyalar, servisler arası iletişim ve port yönlendirme için kullanılır.
İş Dünyasında Docker Kullanımı
Docker en çok geliştirme ortamlarını standartlaştırmak, staging ve production arasındaki farkları azaltmak, yeni geliştiriciyi projeye hızlı dahil etmek ve CI/CD hattında tekrarlanabilir build üretmek için kullanılır. Örneğin bir e-ticaret uygulamasında web uygulaması, worker, Redis ve veritabanı bağlantıları aynı compose dosyasıyla ayağa kaldırılabilir.
Docker tek başına çok sunuculu orkestrasyon çözümü değildir. Çok sayıda konteynerin otomatik ölçeklenmesi, servis keşfi ve rolling update ihtiyacı varsa Kubernetes devreye girer. Docker imajlarının her commit sonrası test edilip yayınlanması için de CI/CD süreçleriyle birlikte düşünülür.
Konteynerleşme kararları mimariyi etkilediği için, Barlas Dijital projelerinde Docker genellikle dağıtım stratejisi ve teknoloji mimari danışmanlığı kapsamında ele alınır.
İlgili Terimler
CI/CD, kod değişikliklerini otomatik derleme, test ve dağıtım hatlarından geçirerek sürümü tekrarlanabilir hale getiren DevOps pratiğidir.
Container RegistryContainer registry, Docker/OCI imajlarını etiketleriyle saklayan, CI/CD ve Kubernetes dağıtımlarına güvenli kaynak sağlayan depodur.
CoolifyCoolify, kendi sunucusunda uygulama, veritabanı ve servis dağıtmayı kolaylaştıran açık kaynak self-hosted PaaS platformudur.
Docker ComposeDocker Compose, birden fazla konteyneri tek YAML dosyasıyla tanımlayıp yerel geliştirme veya test ortamında birlikte çalıştırmayı sağlar.
Ortam YönetimiOrtam yönetimi, geliştirme, test, staging ve production ortamlarının ayar, veri ve sürümlerini kontrollü biçimde ayırır.
HetznerHetzner, Avrupa veri merkezlerinde VPS, dedicated sunucu, depolama ve bulut ağı hizmetleri sunan Alman sağlayıcıdır.
Değişmez AltyapıDeğişmez altyapı, sunucuları yerinde düzeltmek yerine her değişiklikte yeni imaj veya örnekle yeniden dağıtma yaklaşımıdır.
KubernetesKubernetes, konteynerle çalışan servisleri çoklu sunucu üzerinde dağıtma, ölçekleme, güncelleme ve iyileştirme için yönetir.
Kubernetes PodPod, Kubernetes'teki en küçük dağıtım birimidir; bir veya daha fazla konteyneri ve paylaşılan ağ/depolama kaynaklarını içerir.
VPSVPS, fiziksel bir sunucunun sanallaştırılmış bölümünde izole kaynak ve yönetim yetkisi sunan barındırma modelidir.