Sunucu Yönetimi

Docker ile Konteyner Mimarisine Giriş ve Temel Komutlar: Modern Uygulama Dağıtımının Anahtarı

 · 

Docker ile Konteyner Mimarisine Giriş ve Temel Komutlar: Modern Uygulama Dağıtımının Anahtarı

Docker ile Konteyner Mimarisine Giriş ve Temel Komutlar: Modern Uygulama Dağıtımının Anahtarı

Günümüz yazılım dünyasında, uygulamaların hızlı, güvenilir ve tutarlı bir şekilde geliştirilmesi, test edilmesi ve dağıtılması her zamankinden daha kritik hale geldi. İşte tam da bu noktada konteyner mimarisi ve onun lider platformu Docker devreye giriyor. Bu yazıda, Docker'ın ne olduğunu, konteyner mimarisinin sunduğu avantajları ve en temel Docker komutlarını adım adım inceleyeceğiz.

Konteyner Mimarisi Nedir?

Konteyner mimarisi, bir uygulamanın tüm bağımlılıkları (kod, çalışma zamanı, sistem araçları, kütüphaneler vb.) ile birlikte izole edilmiş bir paket içinde çalıştırılmasını sağlayan bir sanallaştırma yöntemidir. Geleneksel sanal makinelerin aksine, konteynerler işletim sistemini paylaşır ancak kendi izole edilmiş kullanıcı alanı, dosya sistemi ve ağ arayüzüne sahiptir.

Konteynerler ve Sanal Makineler Arasındaki Farklar

  • İzolasyon Seviyesi: Sanal makineler (VM'ler) donanımı sanallaştırırken, konteynerler işletim sistemi seviyesinde izolasyon sağlar. Her VM kendi işletim sistemine (Guest OS) sahipken, konteynerler ana işletim sisteminin (Host OS) çekirdeğini paylaşır.
  • Kaynak Tüketimi: VM'ler Guest OS nedeniyle daha fazla RAM, CPU ve disk alanı tüketirken, konteynerler çok daha hafif ve hızlıdır. Bir VM dakikalar içinde başlarken, bir konteyner saniyeler içinde devreye girebilir.
  • Taşınabilirlik: Konteynerler, bağımlılıklarıyla birlikte paketlendiği için "bir kez yaz, her yerde çalıştır" felsefesini mükemmel bir şekilde destekler. Geliştirme ortamında çalışan bir konteyner, test ve üretim ortamlarında da aynı şekilde çalışacaktır.

Docker Nedir ve Neden Önemlidir?

Docker, konteyner teknolojisini kullanarak uygulamaları kolayca paketlemeye, dağıtmaya ve çalıştırmaya olanak tanıyan açık kaynaklı bir platformdur. Geliştiricilerin ve sistem yöneticilerinin hayatını önemli ölçüde kolaylaştırır.

Docker'ın Temel Bileşenleri

  • Docker Image (İmaj): Bir uygulamanın çalışması için gereken tüm bağımlılıkları içeren, salt okunur bir şablondur. Bir imaj, bir konteynerin "kalıbı" gibidir.
  • Docker Container (Konteyner): Bir Docker imajının çalıştırılabilir bir örneğidir. İmajlar pasifken, konteynerler aktif, çalışan uygulamalardır.
  • Dockerfile: Bir Docker imajının nasıl oluşturulacağını tanımlayan metin tabanlı bir betiktir (script). Uygulama kodunu, çalışma zamanını, bağımlılıkları ve yapılandırmayı içerir.
  • Docker Registry (Kayıt Defteri): Docker imajlarının depolandığı ve paylaşıldığı merkezi bir depodur. Docker Hub, en popüler genel kayıt defteridir.

Docker Kullanmanın Avantajları

  • Tutarlılık: Geliştirme, test ve üretim ortamları arasında tutarlılık sağlar. "Benim makinemde çalışıyordu" sorununu ortadan kaldırır.
  • İzolasyon: Uygulamaları birbirinden ve ana sistemden izole ederek çakışmaları önler ve güvenlik sağlar.
  • Taşınabilirlik: Bir konteyner, Docker yüklü herhangi bir sistemde aynı şekilde çalışabilir.
  • Kaynak Verimliliği: Sanal makinelere göre çok daha az kaynak tüketir.
  • Hızlı Dağıtım: Uygulamaların saniyeler içinde başlatılmasına ve durdurulmasına olanak tanır.
  • Sürüm Kontrolü: İmajlar sürümleyebilir, böylece eski versiyonlara kolayca dönülebilir.

Temel Docker Komutları

Docker'ı kullanmaya başlamak için bilmeniz gereken en temel komutlara göz atalım:

1. Docker Sürümünü Kontrol Etme

Docker'ın sisteminizde yüklü olup olmadığını ve hangi sürümde olduğunu kontrol etmek için:

docker --version

2. Bir Docker İmajı Çekme (Pull)

Docker Hub gibi bir kayıt defterinden bir imajı yerel makinenize indirmek için:

docker pull ubuntu:latest

Bu komut, Ubuntu işletim sisteminin en son sürümünü (latest tag'i ile) çeker.

3. Mevcut İmajları Listeleme

Yerel makinenizdeki tüm Docker imajlarını görmek için:

docker images

4. Bir Konteyner Başlatma (Run)

Bir imajdan yeni bir konteyner oluşturup çalıştırmak için en temel komuttur. İşte basit bir örnek:

docker run hello-world

Bu komut, hello-world imajını çalıştırır. Eğer imaj yerelde yoksa otomatik olarak çeker.

Arka planda (detached mode) çalıştırmak ve bir isim vermek için:

docker run -d --name mynginx -p 80:80 nginx
  • -d: Konteyneri arka planda çalıştırır.
  • --name mynginx: Konteynere mynginx adını verir.
  • -p 80:80: Host makinenin 80. portunu konteynerin 80. portuna bağlar (port mapping).
  • nginx: Çalıştırılacak imajın adıdır.

5. Çalışan Konteynerleri Listeleme

Şu anda çalışan tüm konteynerleri görmek için:

docker ps

Tüm (çalışan ve durmuş) konteynerleri görmek için:

docker ps -a

6. Bir Konteyneri Durdurma

Çalışan bir konteyneri durdurmak için konteyner ID'sini veya adını kullanın:

docker stop mynginx

7. Durmuş Bir Konteyneri Başlatma

Daha önce durdurulmuş bir konteyneri yeniden başlatmak için:

docker start mynginx

8. Bir Konteyneri Yeniden Başlatma

Bir konteyneri durdurup tekrar başlatmak için:

docker restart mynginx

9. Bir Konteyneri Silme

Durdurulmuş bir konteyneri sistemden tamamen kaldırmak için (önce durdurulması gerekir):

docker rm mynginx

10. Bir İmajı Silme

Yerel makinenizdeki bir imajı silmek için:

docker rmi ubuntu:latest

Bir imajı silmeden önce, o imajdan oluşturulmuş hiçbir konteynerin çalışmıyor veya var olmuyor olması gerekir.

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

Çalışan bir konteyner içinde komut çalıştırmak veya interaktif bir kabuk açmak için:

docker exec -it mynginx bash
  • -it: İnteraktif bir terminal oturumu açar.
  • mynginx: Komutun çalıştırılacağı konteynerin adı.
  • bash: Konteyner içinde çalıştırılacak komut (burada Bash kabuğu).

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

Bir konteynerin çıktılarını (loglarını) görmek için:

docker logs mynginx

Gerçek zamanlı olarak takip etmek için:

docker logs -f mynginx

Sonuç

Docker ve konteyner mimarisi, modern yazılım geliştirme ve dağıtım süreçlerinin vazgeçilmez bir parçası haline gelmiştir. Sağladığı tutarlılık, izolasyon, taşınabilirlik ve kaynak verimliliği sayesinde uygulamalarınızı daha hızlı, güvenilir ve ölçeklenebilir bir şekilde yönetmenizi sağlar. Bu temel komutlarla Docker dünyasına ilk adımınızı atmış oldunuz. Unutmayın, Docker'ın sunduğu imkanlar bu komutların çok ötesindedir ve keşfedilmeyi bekleyen birçok ileri seviye özelliği bulunmaktadır. Daha derinlemesine bilgi edinmek için Docker belgelerini incelemenizi ve pratik yapmanızı şiddetle tavsiye ederim.

← Blog Listesine Dön