Estimated reading time: 15 minute(s)
Merhaba, bu yazımda size bir konteyner orkestrasyon aracı olan Docker Swarm ve bir Docker UI aracı olan Portainer hakkında bilgi vermeye çalışacağım.
Öncelikle Docker Swarm’a geçmeden önce Docker üzerinde bir kaç konteyner ayağa kaldırıp indirmeniz ve Docker Compose hakkında bilgi sahibi olmanız konuyu daha kolay anlayabilmeniz için önemli.
Çalışma ortamınıza Docker kurulu olmalı. Windows için aşağıdaki linki kullanabilirsiniz.
https://hub.docker.com/editions/community/docker-ce-desktop-windows
Eğer bir linux sunucu üzerine kuracaksanız aşağıdaki linkten kendi işletim sisteminize uygun olan kurulum aşağıdaki linkten bulabilirsiniz.
https://docs.docker.com/engine/install/
Nedir bu Docker Swarm Mode?
Bir örnek düşünelim. Docker’da çalışan bir web sitesi yapmak istiyorsunuz, buna bağlı olarak bir veritabanına ve veritabanı yöneticisine ihtiyacınız olacaktır. Tabii ki birde web uygulamanız çalışacak. En basit senaryomuzda üç konteynere ihtiyacımız olacak.
- WordPress / vs.
- Mysql / Mssql
- phpMyAdmin
Bu üç konteynerı Docker Compose’da tanımlayıp aynı anda ayağa kaldırabilirsiniz. İşte sorun bundan sonra başlıyor. Çalışan konteynerleriniz bir hata verir ve durursa ne olacak? Orkestrasyon araçlarına ihtiyacımız burada başlıyor. En çok kullanılan araçlar Kubernetes ve Docker Swarm. Tercih edilme durumları 10-20 konteyner aralığında çalışıyorsak basit kullanımı ve kurulumu noktasında Docker Swarm başı çekiyor. Ama daha geniş kapsamlı bir kurgumuz varsa Kubernetes alternatifsiz kalıyor.
Mode denmesinin nedeni Docker Swarm aslında Docker’ın kendisinde var olan bir özellik. Docker’ı kurduktan sonra aşağıdaki komutla bunu aktifleştirebiliyoruz.
docker swarm init
Portainer Nedir, Nasıldır?
İlk olarak hızlıca Portainer’ı docker üzerinde ayağa kaldırmakla başlayalım.
Aşağıdaki komutla Portainer için bir volume oluşturuyoruz ver ardından 9000 portu üzerinde çalıştırıyoruz.
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 –name=portainer –restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Güncelleme: Portainer Artık portainer-ce üzerinden ilerleyecek.
docker run -d -p 8000:8000 -p 9000:9000 –name=portainer –restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Her şeyimiz hazır. Şimdi localhost:9000 adresine giderek Portainer kullanıcınızı oluşturabilirsiniz. Sonrasında Endpoint olarak Local’i yani Portainer’ın kurulu olduğu makineyi seçmelisiniz.
Hızlıca menülerden bahsedelim.
1. Home – Dashboard
Home menüsünde aktif makinelerinizi ve özetini görüntüleyebilirsiniz. Dashboard menüsünde de seçili makinenizin detayları görüntülenir.
2. App Templates
Bu menüden hazır konteyner şemalarını görüntüleyip ayağa kaldırabilir veya yeni şemalar ekleyebilirsiniz.
3. Stacks – Services – Containers – Images – Networks – Volumes
Omurga menülerimiz bunlar. Bu menüler altından sisteminizde bulunan tüm docker bileşenlerini yönetebilirsiniz. Dikkat edilmesi gereken bir nokta, eğer Portainer öncesi çalışan Docker Compose’larınız varsa Stacks alanında görüntüleyemezsiniz. Tekrardan Stacks altında oluşturmanız gerekir.
Örnek Uygulama
Yukarıda bahsettiğimiz üç konteyner içeren uygulamamızı hayata geçirelim.
Stacks menüsünden Add Stack diyerek yeni bir stack oluşturacağız.
Name: wordpressstack
Web editor:
Environment’larımıza aşağıdaki değerleri ekleyelim ve Deploy the stack diyerek konteynerlerimizi çalıştıralım.
Artık WordPress uygulamanıza: localhost:8060, phpMyAdmin uygulamanıza: localhost:8080 linklerinden erişebilirsiniz.
Stacks menüsüne tekrar baktığımızda eklediğimiz yeni stack’i görebiliriz.
Eğlenceli kısım başlıyor. Services menüsü altında oluşturduğumuz tüm konteynerlerin birer servis olarak oluşturulduğunu görüyoruz. Burada Scheduling Mode altında replicated seçeneğiyle aynı anda ilgili konteynerden kaçtane oluşturulmasını ayarlayabilirsiniz. Örnek olarak bir Api yazdınız ve bunun replicated sayısını 3 olarak belirlediniz diyelim. Api’ye gelen istekler yük dağılımına göre bu 3 replikaya dağılacaktır. Ayrıca aralarında down olan bir konteyner olursa otomatik olarak Docker Swarm onu ayağa kaldıracaktır. Bu esnada istekler diğer replikalara gidecek ve kayıp yaşanmayacaktır.
Her replikanın sisteminizde ekstra yük oluşturacağını bilerek yönetmelisiniz.
Son durumda phpMyAdmin’i 3 replika olarak ayarladığımız için saniyeler içerisinde bize iki tane daha konteyner kaldırdı ve sistemimizde toplam 6 adet konteyner oluşturmuş olduk.
- Portainer
- WordPress uygulaması
- Mysql
- 3x phpMyAdmin
Konteyner Aksiyonları
Quick actions alanında ilgili konteyner ile ilgili yapabileceğiniz aksiyonlar listelenmektedir. Yukarıda sağda bulunan Settings menüsünden Attach aksiyonunuda aktifleştirdiğinizde sırasıyla;
Logs: Docker’ın konteyner ile ilgili oluşturduğu logları bu aksiyon ile görüntüleyebilirsiniz.
Inspect: Konteynerin Network durum bilgisi gibi çeşitli bilgilere bu aksiyon ile ulaşabilirsiniz.
Stats: Konteynerin ne kadar Ram tükettiğini, CPU ve Network kullanımını bu aksiyon altından anlık görüntüleyebilirsiniz.
Exec Console: Biliyorsunuzki her bir konteyner sanki bir sanal makine gibi çalışır, Exec Console aksiyonuyla konteyner makinesine terminal bağlantısı yapabilirsiniz.
Attach Console: Uygulamanızın bıraktığı logları Attach console aksiyonuyla anlık olarak izleyebilirsiniz.
Umarım faydalı olmuştur, aklınıza takılan yerler olursa lütfen sorun.