Bölüm1: Docker Nedir? Ubuntu Üzerinde Nasıl Kurarız?
Docker hakkında 2 blog yazmayı düşünüyorum. Birincisi yani bu okuduğunuz,
Kısaca docker’dan bahsedip, ubuntu üzerinde kurulumları tamamlayacağız.
Diğer yazımda ise ui ve api’si bulunan bir projemi dockerize edeceğiz,
Dockerize ederken docker container, docker build, docker image, docker compose .. gibi konulara ve CLI komutlarına kısaca değinmeyi düşünüyorum.
Docker kuruluma geçmeden önce bazı konulara kısaca değinmek istiyorum.
Sanallaştırma?
Fiziksel kaynakların (CPU, bellek, ağ yapıları vb) mantıksal bir katmandan ayrılarak,
birden fazla sanal düğüm (nod) yada makina olarak çalışmasına olanak veren,
donanımların daha esnek ve daha verimli hale gelmesine sağlayan bir çözümdür.
Avantajları:
- Toplam maliyeti azaltır.
- Esneklik sağlar.
- Ölçeklenebilir.
- Kolay yönetilebilir.
- Kolay yedekleme sunar.
- Uygulamaların hızlı bir şekilde ayağa kaldırılması için ortam sağlar.
Container ?
Hep verilen örneği vermek istiyorum.
Gemi taşımacılığındaki container’lardır.
Bu container’lar
birbirinden izole edilmiş şekilde diğer container’lar ile reaksiyona girmeden durmaktadırlar.
Ek olarak container’ların kapladığı alan bellidir.
Yani hiç bir zaman bir container diğer container alanına taşma yapamaz.
Yazılımsal olarak container,
Uygulamanın çalışması için işletim sistemi, kütüphaneler, konfigürasyon dosyaları gibi nelerin gerekli olduğunun tanımlanmasını içerir.
Docker ?
Docker, yazılım geliştiriciler ve sistemciler için geliştirilen açık kaynaklı bir sanallaştırma platformudur.
Docker ile Linux, Windows ve MacOSX üzerinde Linux ve Windows sanal containerler çalıştırabiliyoruz.
Bu platform sayesinde web sistemlerinin kurulumunu, testini ve dağıtımını kolaylıkla gerçekleştirebilirsiniz.
En önemli özelliği belki de “Benim bilgisayarımda çalışıyordu, sunucuda neden çalışmadı acaba?” sorununu ortadan kaldırıyor olmasıdır.
Aklımızda daha iyi canlanması için küçük bir örnek verelim,
Bir todoapp yaptığımızı düşünelim.
Bu projemizi sunucuda veya arkadaşımızın bilgisayarında çalıştırmak istiyoruz.
Ui, api ve veritabanımız olacak.
ui node üzerinde çalışsın.
api springboot teknolojisi olsun.
Veritabanımız MySQL olsun.
Uygulama için bilgisayar/sunucuda çalıştırmak yapmamız gereken adımları sayacak olursak,
ui için,
- nodejs kurulmalı,
- npm install komutlarını çalıştırmalıyız.
db için,
- mysql kurulmalı
api için,
- jdk yüklenmeli,
- maven yüklenmeli,
- mvn install yapılmalı,
- java -jar komutu çalıştırılmalı,
- api’nin veritabanı configürasyonları yapılmalı.
Aklıma gelen adımlar bunlar, belki eksik saymış bile olabilirim.
Her farklı ortamda bu adımların hepsini yapmak hem zaman kaybı hemde kurarken yapacağımız hataları düşünmek şimdiden canımızı sıktı.
İşte docker tam olarak burada bizim yükümüzü hafifletmektedir.
Sadece 3 tane configürasyonu tek seferliğine yazarak tüm bu adımlardan ve tekrarlamalardan kurtulmuş oluyoruz.
Uygulamamızı dockerize ettikten sonra istediğimiz local bilgisayar/sunucuda uygulamamızı ayağa kaldırmak için tek gereken şey docker’ı indirip kurmak olmaktadır.
Kurulum,
İlk olarak sudo apt-get update komutunu terminalimize yazalım.
Eğer curl yüklü değilse, sudo apt install curl komutunu yazarak curl yüklüyoruz.
Daha sonra https://get.docker.com/ adresine giriyoruz.
Daha sonra aşağıda bulunan görseldeki adımları tek tek uygulayalım.
Yukarıdaki komutu çalıştırıyoruz.
docker kurulumunu yapıyoruz.
docker versiyonu öğrenebiliriz.
docker-machine adresinden linux için olan komutu alıp docker-machine kurulumunu yapıyoruz.
docker-compose adresinden linux için olan komutu alıp docker-compose kurulumu yapıyoruz.
docker-compose için bir yapılandırmamız mevcut, yetkileri ayarlamamız için.
docker-compose versiyon komutumuzu çalıştırıp versiyonumuzu görmüş ve yüklendiğini test etmiş olduk.
Bir sonraki blog yazımda kurduklarımız ve gerekli dosyalar(Dockerfile, docker-compose.yml) hakkında bilgiler vererek beraber uygulamamızı dockerize edeceğiz.