Docker Container
TL;DR
Bir Docker konteyneri, bir uygulamayı ihtiyaç duyduğu her şeyle paketlemenin basit bir yoludur, böylece her yerde aynı şekilde çalışır.
Docker Konteyneri Nedir?
Bir Docker konteyneri, şunları içeren küçük, hafif bir pakettir:
- uygulama kodu
- ihtiyaç duyduğu araçlar
- kütüphaneler
- ayarlar
Her şey bir arada paketlendiği için, uygulama herhangi bir bilgisayarda aynı şekilde çalışır.
Konteynerler, sanal makinelerden farklıdır çünkü kendi işletim sistemlerine sahip değillerdir. Sunucunun ana işletim sistemini kullanırlar ancak diğer uygulamalardan ayrı kalırlar.
Bunu kolayca hayal etmek için:
- Sanal Makine: Kendi elektriği ve tesisatı olan tam bir ev.
- Docker Konteyneri: Bir binadaki daire gibidir, kendi alanınız ama su ve elektrik gibi şeyleri paylaşırsınız.
Docker Konteynerlerinin Neden Yararlı Olduğu
Uygulamalar farklı ortamlarda çalıştığında, örneğin geliştirme, hazırlık veya üretim gibi, birçok hata meydana gelir. Docker, her şeyi tutarlı hale getirerek yardımcı olur.
Ana faydalar:
- Tutarlılık Uygulamanız dizüstü bilgisayarınızda çalışıyorsa, üretimde de çalışacaktır.
- İzolasyon Bir konteyner çalışmayı durdurursa, diğerleri çalışmaya devam eder.
- Taşınabilirlik Uygulamanızı bir Mac üzerinde inşa edebilir ve Linux’ta veya bulutta herhangi bir değişiklik yapmadan çalıştırabilirsiniz.
- Verimlilik Konteynerler hızlı başlar ve sanal makinelerden daha az bellek kullanır.
Docker Konteynerleri Nasıl Çalışır
Docker, konteynerleri oluşturmak ve çalıştırmak için Docker Engine adlı ana hizmeti kullanır.
1. Docker İmajı
Bir görüntü bir şablondur. Bir uygulamayı çalıştırmak için gereken talimatlar ve dosyaları içerir.
2. Docker Registry
Görüntüler Docker Hub gibi yerlerde depolanır. Görüntüleri indirebilir (pull) veya kendi görüntülerinizi yükleyebilirsiniz (push).
3. Bir Konteyner Çalıştırma
Bir görüntüyü çalıştırdığınızda, bu bir konteyner haline gelir. Bu konteyner, küçük ve hızlı kalmasına yardımcı olan paylaşılan katmanlar kullanır.
Docker Konteyner vs Sanal Makine
| İşletim sistemi | Ana bilgisayar OS’sini paylaşır | Kendi OS’sine sahiptir |
|---|---|---|
| Boyut | Küçük (MB’ler) | Büyük (GB’ler) |
| Başlangıç süresi | Saniyeler | Dakikalar |
| Kaynak kullanımı | Düşük | Yüksek |
Basit Örnek
Bir Python web uygulaması dağıtmak istediğinizi hayal edin.
Docker Olmadan: Her sunucuya Python, Flask ve diğer araçları yüklemeniz gerekir. Farklı sunucu kurulumları hatalara neden olabilir.
Docker ile:
- Bir Dockerfile yazın
- Görüntüyü oluşturun
- Konteyneri çalıştırın
Uygulama her yerde aynı şekilde çalışacaktır.
Docker Konteynerlerini Kim Kullanır?
- Geliştiriciler: Yerel makinelerde kurulum sorunlarından kaçınmak için
- DevOps ekipleri: Dağıtım ve ölçeklendirmeyi otomatikleştirmek için
- Güvenlik ekipleri: Uygulamaları izole etmek ve yayın öncesi görüntüleri taramak için
En İyi Uygulamalar
-
Her konteynerde bir uygulama
Her konteynerin basit ve odaklanmış olduğundan emin olun.
-
Güvenilir görüntüler kullanın
Mümkün olduğunda, resmi görüntülerle başlayın.
-
Görüntüleri küçük tutun
Daha küçük görüntüler daha hızlı çalışır ve genellikle daha güvenlidir.
-
Güvenlik sorunları için tarayın.
Görüntülerinizi bilinen güvenlik sorunları için kontrol edin.
İlgili Terimler
- Kubernetes
- Konteyner orkestrasyonu
- Mikroservisler
- CI/CD boru hattı
- CI/CD güvenliği
SSS
Docker sanal makine ile aynı mı?
Hayır. Konteynerler işletim sistemini paylaşır. Sanal makineler paylaşmaz.
Docker konteynerleri nerede çalışabilir?
Dizüstü bilgisayarlarda, sunucularda veya herhangi bir büyük bulut sağlayıcısında.
Docker konteynerleri güvenli mi?
İzolasyon eklerler, ancak güvenlik, görüntülerin nasıl oluşturulduğuna ve tarandığına bağlıdır.
Bir görüntü ile bir konteyner arasındaki fark nedir?
Bir görüntü bir şablondur. Bir konteyner, o şablondan yapılan çalışan bir uygulamadır.