Sunucu Yönetimi

Docker ile Konteyner Mimarisine Giriş: Temeller ve İlk Adımlar

 · 

Docker ile Konteyner Mimarisine Giriş: Temeller ve İlk Adımlar

Docker ile Konteyner Mimarisine Giriş: Temeller ve İlk Adımlar

Merhaba değerli okuyucularım, ben Gökhan Güngör. Günümüz IT dünyasında yazılım geliştirme, dağıtma ve yönetme süreçleri her geçen gün daha karmaşık hale geliyor. Bu karmaşıklığı yönetmek, uygulamaların tutarlı bir şekilde farklı ortamlarda çalışmasını sağlamak ve kaynak verimliliğini artırmak için konteyner teknolojileri, özellikle de Docker, vazgeçilmez bir araç haline gelmiştir. Bu yazımızda, konteyner mimarisinin ne olduğunu, Docker'ın sunduğu avantajları ve temel Docker komutlarını adım adım keşfedeceğiz.

Konteyner Mimarisi Nedir? Neden Sanal Makinelerden Farklıdır?

Geleneksel olarak, uygulamaları izole etmek için sanal makineler (VM) kullanılırdı. Her bir VM, kendi işletim sistemine, çekirdeğine ve bağımlılıklarına sahip tam teşekküllü bir sunucu gibi çalışırdı. Bu durum, kaynak tüketimi ve başlatma süreleri açısından önemli bir yüke neden oluyordu.

Konteyner mimarisi ise çok daha hafif bir izolasyon yöntemi sunar. Konteynerler, ana bilgisayarın işletim sistemi çekirdeğini paylaşır ancak kendi izole edilmiş kullanıcı alanı süreçlerine, dosya sistemlerine ve ağ arayüzlerine sahiptir. Bu, uygulamaların tüm bağımlılıklarıyla birlikte paketlenmesini ve farklı ortamlarda tutarlı bir şekilde çalışmasını sağlar.

  • Hafiflik: Konteynerler, VM'lere göre çok daha az kaynak tüketir.
  • Hızlı Başlangıç: İşletim sistemi başlatma yükü olmadığı için saniyeler içinde ayağa kalkarlar.
  • Taşınabilirlik: Bir konteyner, geliştirme ortamından test ortamına ve oradan da üretim ortamına hiçbir değişiklik yapmadan taşınabilir.
  • İzolasyon: Uygulamalar ve bağımlılıkları birbirinden izole edilmiştir, bu da çakışmaları önler.

Docker Nedir ve Neden Kullanmalıyız?

Docker, Linux kapsayıcılarını (container) yönetmek için geliştirilmiş açık kaynaklı bir platformdur. Uygulamaları ve onların tüm bağımlılıklarını tek bir pakette toplayarak, "bir kez inşa et, her yerde çalıştır" felsefesini gerçeğe dönüştürür. Docker, geliştiricilerin ve sistem yöneticilerinin uygulamaları hızlı, güvenilir ve taşınabilir bir şekilde paketlemesine, dağıtmasına ve çalıştırmasına olanak tanır.

Docker kullanmanın başlıca nedenleri:

  • Tutarlılık: Uygulamanızın geliştirme, test ve üretim ortamlarında aynı şekilde çalışmasını sağlar.
  • Verimlilik: Kaynakları daha verimli kullanır ve sunucu maliyetlerini düşürür.
  • Hız: Uygulama dağıtım ve başlatma sürelerini önemli ölçüde hızlandırır.
  • Ölçeklenebilirlik: Uygulamaları kolayca ölçeklendirme imkanı sunar.
  • DevOps Entegrasyonu: CI/CD (Sürekli Entegrasyon/Sürekli Teslimat) süreçleriyle mükemmel entegrasyon sağlar.

Docker Temel Kavramları

Docker Image (İmaj)

Bir Docker imajı, bir uygulamanın çalışması için gerekli tüm kodları, çalışma zamanlarını, sistem araçlarını, sistem kütüphanelerini ve ayarları içeren hafif, bağımsız ve yürütülebilir bir pakettir. İmajlar, konteynerlerin temelini oluşturur ve Dockerfile adı verilen betikler aracılığıyla oluşturulur.

Docker Container (Konteyner)

Bir Docker imajının çalıştırılabilir bir örneğidir. Bir konteyner, izole edilmiş bir ortamda çalışan bir veya daha fazla işlemden oluşur. Her konteyner kendi dosya sistemine, ağ arayüzüne ve işlem alanına sahiptir.

Dockerfile

Bir Docker imajının nasıl oluşturulacağını adım adım tanımlayan metin tabanlı bir betiktir. Bu dosya, bir imajın temelini, bağımlılıklarını, çalışma dizinini, portlarını ve başlangıç komutlarını belirtir.

Docker Hub

Docker imajlarını depolamak ve paylaşmak için kullanılan bulut tabanlı bir depodur. Hem açık kaynaklı hem de özel imajları barındırır ve Docker kullanıcılarının imajları kolayca indirip yüklemesine olanak tanır.

Docker Kurulumu (Kısa Bir Bakış)

Docker'ı sisteminize kurmak oldukça basittir. İşletim sisteminize (Windows, macOS, Linux) göre farklı kurulum yöntemleri mevcuttur. Genellikle Docker Desktop (Windows/macOS için) veya Docker Engine (Linux sunucular için) indirip kurarak başlayabilirsiniz. Kurulum detayları için Docker'ın resmi belgelerine başvurmanız önerilir.

Temel Docker Komutları

Docker ile çalışmaya başlamak için bilmeniz gereken temel komutlar şunlardır:

Docker Versiyonunu Kontrol Etme

Docker'ın kurulu olup olmadığını ve versiyonunu kontrol eder.

docker --version

Bir İmajı Çekme (Pull)

Docker Hub'dan veya başka bir depodan bir imajı yerel makinenize indirir.

docker pull ubuntu:latest

Mevcut İmajları Listeleme

Yerel makinenizdeki tüm Docker imajlarını listeler.

docker images

Bir Konteyner Çalıştırma

Bir imajdan yeni bir konteyner oluşturur ve çalıştırır. -d arka planda çalıştırmak için, -p port eşleştirmek için kullanılır.

docker run -d -p 80:80 --name mynginx nginx

Çalışan Konteynerleri Listeleme

Şu anda çalışan tüm konteynerleri listeler. -a durdurulmuş konteynerleri de gösterir.

docker ps -a

Bir Konteyneri Durdurma

Belirtilen adı veya ID'si olan bir konteyneri durdurur.

docker stop mynginx

Bir Konteyneri Başlatma

Durdurulmuş bir konteyneri tekrar başlatır.

docker start mynginx

Bir Konteyneri Yeniden Başlatma

Bir konteyneri durdurur ve sonra tekrar başlatır.

docker restart mynginx

Bir Konteyneri Silme

Durdurulmuş bir konteyneri sistemden siler. Çalışan bir konteyneri silmek için önce durdurmanız gerekir.

docker rm mynginx

Bir İmajı Silme

Yerel makineden bir imajı siler. İmajın kullanıldığı çalışan veya durdurulmuş konteyner olmamalıdır.

docker rmi ubuntu:latest

Çalışan Bir Konteyner İçine Girme (Exec)

Çalışan bir konteyner içinde komut çalıştırmanıza veya bir shell oturumu açmanıza olanak tanır.

docker exec -it mynginx bash

Konteyner Loglarını Görüntüleme

Bir konteynerin standart çıktı (stdout) ve standart hata (stderr) loglarını görüntüler.

docker logs mynginx

Bir Dockerfile'dan İmaj Oluşturma

Mevcut dizindeki Dockerfile'ı kullanarak yeni bir imaj oluşturur. . mevcut dizini belirtir, -t imaja isim ve etiket verir.

docker build -t myapp:1.0 .

Konteyner Mimarisi ile Gelen Avantajlar

Konteynerler, modern yazılım geliştirme ve dağıtım süreçlerinin vazgeçilmez bir parçası haline gelmiştir. Sundukları hafiflik, taşınabilirlik, izolasyon ve hızlı dağıtım yetenekleri sayesinde:

  • Geliştirme ekipleri daha hızlı yinelemeler yapabilir.
  • Operasyon ekipleri daha tutarlı ve güvenilir dağıtımlar gerçekleştirebilir.
  • Kaynaklar daha verimli kullanılabilir, bu da maliyet tasarrufu sağlar.
  • Uygulama ölçeklenebilirliği ve esnekliği artar.

Sonuç

Docker ve konteyner mimarisi, yazılım dünyasında devrim niteliğinde değişiklikler yaratmıştır. Uygulamaları paketleme, dağıtma ve çalıştırma şeklimizi kökten değiştirerek, daha verimli, tutarlı ve ölçeklenebilir bir yaklaşım sunmaktadır. Bu yazıda ele aldığımız temel kavramlar ve komutlar, Docker dünyasına ilk adımınızı atmanız için sağlam bir temel oluşturacaktır. Konteyner teknolojilerini öğrenmeye devam ederek, modern IT altyapılarında kendinize önemli bir yer edinebilirsiniz. Unutmayın, geleceğin teknolojileri bugünden şekilleniyor ve konteynerler bu geleceğin önemli bir parçası.

Bir sonraki yazımda görüşmek üzere, hoşça kalın!

← Blog Listesine Dön