"Benim bilgisayarımda çalışıyordu" cümlesi yazılım dünyasının klasiklerindendir. Docker, bir uygulamayı ihtiyaç duyduğu her şeyle birlikte paketleyerek her ortamda aynı şekilde çalışmasını sağlayan konteyner teknolojisidir.
Konteyner nedir?
Konteyner; uygulamayı, çalışma zamanını, kütüphaneleri ve ayarları içeren izole bir pakettir. Aynı sunucuda birbirini etkilemeden birden fazla konteyner çalışabilir.
Sanal makineden farkı
- Sanal makine: Kendi işletim sistemini içerir; ağırdır, açılması uzun sürer.
- Konteyner: Ana makinenin çekirdeğini paylaşır; hafiftir, saniyeler içinde başlar.
Temel kavramlar
- Dockerfile: İmajın nasıl oluşturulacağını tarif eden dosya.
- İmaj: Uygulamanın paketlenmiş, değişmez hali.
- Konteyner: İmajın çalışan bir örneği.
- Registry: İmajların saklandığı depo.
.NET uygulaması için örnek
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "SiparisApi.dll"]
Çok aşamalı yapı sayesinde son imajda yalnızca çalışma için gerekenler bulunur. .NET SDK, ayrıca Dockerfile yazmadan doğrudan konteyner imajı üretmeyi de destekler.
docker compose ile geliştirme ortamı
Uygulama, veritabanı ve önbelleği tek bir dosyada tanımlayıp tek komutla ayağa kaldırmak mümkündür. Yeni bir geliştirici projeye katıldığında kurulum dakikalar sürer. Daha gelişmiş bir yaklaşım için Aspire nedir yazımıza bakabilirsiniz.
İşletmeler için faydaları
- Kurulum ve dağıtım tekrarlanabilir hale gelir.
- Farklı uygulamalar aynı sunucuda birbirini etkilemeden çalışır.
- Sürüm geri alma kolaylaşır.
- CI/CD süreçleriyle otomatik dağıtım yapılabilir.
Güvenlik
- Resmî ve güvenilir temel imajları kullanın, düzenli güncelleyin.
- Parolaları imaja gömmeyin; ortam değişkenleri veya gizli bilgi yönetimi kullanın.
- Konteynerleri gereksiz yetkilerle (root) çalıştırmaktan kaçının.
Lisans notu
Docker Engine açık kaynaklıdır. Ancak masaüstü yönetim aracı Docker Desktop, belirli büyüklüğün üzerindeki ticari kuruluşlar için ücretli abonelik gerektirir. Şirketinizin durumunu Docker'ın güncel lisans koşullarından kontrol edin veya açık kaynaklı alternatifleri değerlendirin.
Sık sorulan sorular
Küçük bir proje için Docker gerekli mi?
Zorunlu değildir. Ancak birden fazla bileşen veya farklı ortamlara dağıtım varsa kısa sürede fayda sağlar.
Windows masaüstü uygulamaları konteynerde çalışır mı?
Docker esas olarak sunucu ve web uygulamaları içindir. Masaüstü uygulamalar için uygun bir çözüm değildir.
Sonuç
Docker, yazılımın her ortamda aynı şekilde çalışmasını sağlayan modern geliştirmenin temel araçlarından biridir. Dağıtım altyapınız için destek alabilirsiniz.