Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Docker, uygulamaları ve ihtiyaç duydukları bağımlılıkları bir container içinde paketleyip farklı ortamlarda tutarlı biçimde çalıştırmayı sağlayan bir platformdur. Container; uygulamanın kodunu, kütüphanelerini ve çalışma ayarlarını taşır ancak işletim sistemi çekirdeğini sanal makine gibi tamamen kopyalamaz. Bu nedenle genellikle sanal makinelere göre daha hızlı başlar ve daha az kaynak tüketir.

Docker nasıl çalışır?​


Docker kullanımında birbirinden farklı dört kavramı ayırmak gerekir:

  • Image: Uygulamanın çalışması için gereken dosyaları ve başlangıç ayarlarını içeren, değiştirilemeyen şablondur.
  • Container: Bir image çalıştırıldığında oluşan izole çalışma örneğidir. Aynı image'dan birden fazla container başlatılabilir.
  • Docker Engine: Image indirme, container oluşturma, başlatma ve durdurma işlerini yapan çalışma katmanıdır.
  • Registry: Image'ların saklandığı depodur. Genel veya kuruma özel olabilir.

Örneğin bir web uygulaması için sunucuda ayrıca belirli bir işletim sistemi paketi, çalışma zamanı ve kütüphane kurmak yerine bunları bir image içinde tanımlayabilirsiniz. Aynı image geliştirici bilgisayarında, test sunucusunda ve üretim sunucusunda kullanıldığında ortam farklarından kaynaklanan sorunlar azalır. Ancak Docker uygulamanın hatalarını kendiliğinden düzeltmez; yanlış yapılandırılmış veya güvenlik açığı bulunan bir uygulama container içinde de sorunlu kalır.

Sanal makineden farkı​


Docker container'ı, tam bir sanal bilgisayar olarak düşünmemek gerekir. Sanal makine kendi işletim sistemi çekirdeğini ve genellikle daha geniş bir sistem katmanını çalıştırır. Linux container ise üzerinde çalıştığı Linux çekirdeğini paylaşarak süreçleri izole eder. macOS ve Windows masaüstünde Linux container çalıştırılırken arada bir Linux sanallaştırma katmanı bulunabilir; doğrudan macOS çekirdeğini paylaştığı düşünülmemelidir. Bu, başlatma ve kaynak kullanımı açısından avantaj sağlayabilir; karşılığında container'lar arasında güçlü bir sanal donanım sınırı varmış gibi davranılmamalıdır.

Aşağıdaki ayrım hangi yaklaşımın uygun olduğunu anlamayı kolaylaştırır:

İhtiyaçDaha uygun yaklaşımGerekçe
Tek bir uygulama ve bağımlılıklarını taşımakDocker containerTekrarlanabilir ve hızlı dağıtım
Farklı işletim sistemi çekirdeklerini çalıştırmakSanal makineDaha kapsamlı işletim sistemi izolasyonu
Bir servisin birden çok kopyasını çalıştırmakDocker veya orkestrasyon aracıImage üzerinden çoğaltma yapılabilir

Docker, veritabanı gibi kalıcı verisi olan servislerde tek başına yedekleme sistemi değildir. Container silindiğinde container'ın kendi yazılabilir katmanındaki veriler kaybolabilir. Kalıcı veriler için volume veya ana makinede uygun bir bağlama kullanılması ve ayrıca düzenli yedek alınması gerekir.

Çalışan bir container ile temel deneme​


Ön koşul olarak Docker Engine'in kurulu ve çalışan bir makineye, ayrıca komut satırında Docker komutunu çalıştırma yetkisine sahip bir kullanıcıya ihtiyaç vardır. Kurulum yolu işletim sistemine göre değiştiği için burada yalnızca kurulum sonrası doğrulama gösterilmektedir.

  1. Komut satırında aşağıdaki image'ı çalıştırın: docker run --rm hello-world
  2. Çıktıda Docker kurulumunun başarıyla çalıştığını belirten karşılama metnini arayın. Bu komut image yerelde yoksa onu registry'den alır, geçici bir container başlatır ve işlem bitince --rm sayesinde container'ı siler.
  3. Komut başarılıysa sonraki adım olarak uygulamanız için bir Dockerfile hazırlayın; image'ı oluşturun, yapılandırma ve kalıcı veri gereksinimlerini ayrıca tanımlayın.

Komut başarısız olursa hata metninin anlamına göre ilerleyin. Docker daemon'a bağlanılamadığı belirtiliyorsa Docker Engine çalışmıyor olabilir. Yetki hatası varsa kullanıcı hesabının Docker komutlarını çalıştırma yetkisi veya yönetici yetkisi kontrol edilmelidir. Image indirilemiyorsa ağ erişimi, registry adresi veya image adının doğruluğu incelenmelidir. Bu testin başarılı olması yalnızca Docker çalışma katmanının temel olarak çalıştığını gösterir; uygulamanızın doğru yapılandırıldığını veya üretime hazır olduğunu kanıtlamaz.

Kaynaklar​



Sık sorulan sorular​


Docker yalnızca Linux sunucularda mı kullanılır?​

Docker komutları farklı işletim sistemlerinde kullanılabilir; ancak Linux container'ların çalışması için uygun bir Linux çekirdeği veya bunu sağlayan sanallaştırma katmanı gerekir. Bu nedenle masaüstü ve sunucu ortamlarında çalışma ayrıntıları aynı olmayabilir.

Container durdurulunca içindeki veriler silinir mi?​

Container durdurulduğunda genellikle silinmez; ancak container silinir veya yeniden oluşturulursa kendi geçici katmanındaki veriler korunmayabilir. Kalıcı veriler container yaşam döngüsünden ayrılmış bir volume ya da uygun harici depolama üzerinde tutulmalıdır.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.