Sobes.tech
Junior

Docker hangi temel özelliklere dayanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Docker’ın temel özellikleri:

  • İşlem izolasyonu: Konteynerler doğası gereği birbirinden ve ana sistemden izoledir. Bu, Linux çekirdeği mekanizmaları olan namespace’ler (PID, NET, IPC, MNT, UTS) ve cgroups (CPU, bellek, I/O kaynaklarını sınırlamak için) kullanılarak sağlanır.

  • İmajlar: Docker imajı, uygulamayı çalıştırmak için gereken her şeyi içeren değiştirilemez, katmanlı bir varlıktır: kod, kütüphaneler, bağımlılıklar, araçlar ve yapılandırma dosyaları. İmajlar, "katmanlar üzerine katmanlar" prensibiyle inşa edilir, bu da ortak bileşenlerin yeniden kullanılmasını ve alan tasarrufu sağlar.

  • Konteynerler: Bir konteyner, bir imajın çalışan örneğidir. Hafiftir, taşınabilir ve çalışan uygulamayı içerir. Konteynerler hızlıca başlatılabilir, durdurulabilir, taşınabilir ve ölçeklenebilir.

  • Dockerfile: Dockerfile, Docker imajının oluşturulma sürecini tanımlayan talimatlar dizisidir. Bu, tekrarlanabilirlik ve otomasyon sağlayan deklaratif bir yaklaşımdır.

    # Dockerfile örneği
    FROM alpine:3.14 // Temel imaj
    RUN apk add --no-cache nginx // Paketlerin kurulumu
    COPY html/ /usr/share/nginx/html/ // Dosyaların kopyalanması
    EXPOSE 80 // Port açma
    CMD ["nginx", "-g", "daemon off;"] // Konteyner başlatıldığında çalıştırılacak komut
    
  • Katmanlı dosya sistemi: Docker, Union File Systems (AUFS, OverlayFS) kullanır, bu da katmanlardan imajlar oluşturmayı sağlar. Her katman, bir önceki katmana göre yapılan değişiklikleri temsil eder. Bu özellik, imajların hızlı oluşturulmasını, katmanların önbelleğe alınmasını ve disk alanının verimli kullanılmasını sağlar.

  • Docker Registry: Docker kayıtları (Docker Hub, GCR, ACR gibi), Docker imajlarının depolanması ve dağıtımı için kullanılır. Geliştiriciler, ekipler ve ortamlar arasında imaj alışverişini kolaylaştırır.

  • Taşınabilirlik: İmajlar ve konteynerler taşınabilir olacak şekilde tasarlanmıştır. Bir platformda oluşturulan imaj, Docker yüklü herhangi bir platformda çalıştırılabilir, bağımlılıkların yeniden yapılandırılmasına gerek kalmaz.

  • Hızlı başlatma: Bir konteynerin başlatılması, tam bir işletim sistemi yüklenmesi gerekmediği için sanal makine başlatılmasından çok daha hızlıdır.

  • Kaynakların verimli kullanımı: Konteynerler, ana sistem kaynaklarını sanal makinelerden daha verimli kullanır, çünkü ayrı çekirdekler tahsis etmeleri gerekmez.