Docker Swarm Nedir?
Docker Swarm, birden fazla Docker hostunu bir araya getirerek bu hostlar üzerinde konteynerlerin yönetilmesini sağlayan yerel bir orkestrasyon aracıdır. Swarm, yüksek erişilebilirlik, yük dengeleme ve ölçeklenebilirlik gibi avantajlar sunar. Kubeflow ve Kubernetes gibi daha kapsamlı orkestrasyon çözümlerinin yanında, Docker Swarm daha basit ve kullanıcı dostu bir arayüz sunarak, küçük ve orta ölçekli projeler için ideal bir seçim olabilir.
Sistem Gereksinimleri
Docker Swarm kurulumu için birkaç sistem gereksinimi bulunmaktadır. Öncelikle, Docker’nin kurulu olduğu bir işletim sistemi gereklidir. Docker, Linux, macOS ve Windows üzerinde çalışmaktadır. Bunun yanı sıra, en az iki tane fiziksel veya sanal makineye ihtiyaç vardır. Bu makineler “Swarm yöneticisi” ve “worker” node olarak iki farklı rol üstlenecektir. Yöneticiler, Swarm kümesinin yönetiminden ve durumunun izlenmesinden sorumludur. Worker node’lar ise konteynerleri çalıştırır.
Docker Kurulumu
Docker Swarm kurulumu için öncelikle Docker’ın sistemde kurulu olması gerekmektedir. Aşağıdaki adımlar, Docker’ın bir Linux makinesine kurulumu için örnek teşkil eder.
1. Sistemi Güncelleme:
“`
sudo apt-get update
sudo apt-get upgrade
“`
2. Docker Kurulumu:
Aşağıdaki komutlar ile Docker CE (Community Edition) kurulumu gerçekleştirilebilir:
“`
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
sudo apt-get update
sudo apt-get install docker-ce
“`
3. Docker Servisini Başlatma:
Docker servisi kurulumdan sonra otomatik olarak başlamalıdır. Ancak, aşağıdaki komutla servisi kontrol edebilir ve gerekirse başlatabilirsiniz:
“`
sudo systemctl start docker
sudo systemctl enable docker
“`
4. Kurulumu Kontrol Etme:
Aşağıdaki komut ile Docker’ın düzgün bir şekilde kurulduğunu kontrol edebilirsiniz:
“`
sudo docker –version
“`
Docker Swarm’ı Başlatma
Docker yüklendikten sonra, Docker Swarm modunu etkinleştirmek için aşağıdaki adımlar izlenmelidir.
1. Swarm Modunu Etkinleştirme:
Swarm modunu başlatmak için bir yöneticinin terminalinde aşağıdaki komut girilmelidir:
“`
sudo docker swarm init
“`
Bu komut, mevcut makineyi yöneticisi olarak Swarm’a dahil eder. Swarm oluşturulduğunda, diğer worker node’ları eklemek için gerekli olan token bilgisi de sağlanacaktır.
2. Worker Node Ekleme:
Diğer makineleri Swarm’a eklemek için, yöneticiden elde edilen token ile aşağıdaki komut kullanılmalıdır:
“`
sudo docker swarm join –token
“`
Burada `
Docker Swarm Kullanımı
Docker Swarm’da bir uygulamayı dağıtmak için bir hizmet oluşturmak gerekmektedir. Aşağıdaki adımlar üzerinden nasıl yapılacağı açıklanacaktır.
1. Hizmet Oluşturma:
Aşağıdaki komut ile yeni bir hizmet oluşturulabilir:
“`
sudo docker service create –replicas 3 –name web nginx
“`
Bu komut, üç kopyadan oluşan bir `nginx` hizmeti oluşturur.
2. Hizmet Durumunu Kontrol Etme:
Oluşturulan hizmetlerin durumunu kontrol etmek için aşağıdaki komut kullanılabilir:
“`
sudo docker service ls
“`
3. Servisi Güncelleme veya Durdurma:
Servisin güncellenmesi veya durdurulması isteniyorsa, aşağıdaki komutlar kullanılabilir:
Servisi güncellemek için:
“`
sudo docker service update –image nginx:latest web
“`
Servisi durdurmak için:
“`
sudo docker service rm web
“`
Log Yönetimi
Docker Swarm içinde çalışan hizmetlerin log’larını takip etmek için `docker service logs` komutu kullanılabilir. Bu komut ile çalışan servislerin çıktıları izlenebilir.
Güvenlik
Docker Swarm’da güvenlik, TLS ile sağlanmaktadır. Swarm yöneticisi ve worker node’lar arasında güvenli bir bağlantı sağlamak için TLS sertifikaları oluşturulmakta ve kullanılmaktadır. Bu nedenle, iletişimlerin güvenliği sağlanmış olur.
Sonuç
Docker Swarm kurulumu ile birlikte yüksek erişilebilirlik ve yönetim kolaylığı sağlayan bir dağıtım mimarisi oluşturulabilmektedir. Swarm, küçüklü büyüklü projelerde etkili bir orkestrasyon çözümü sunmakta, kullanıcıların konteynerlerini daha verimli bir şekilde yönetmelerine olanak tanımaktadır. Bu yapı, günümüz yazılım geliştirme süreçlerinde oldukça önemli bir yer tutmaktadır.