Docker Nedir?

Yazılımcıysanız veya bilgi teknolojileri alanında çalışıyorsanız, bugüne kadar hiç kullanmamış olsanız bile Docker‘in adını duymuş olabilirsiniz.

Eğer duymadıysanız, kısaca uygulamaları konteynerler (container) için paketlemek, dağıtmak ve çalıştırmak için kullanılan, sizin ve ekibinizin verimliliğini inanılmaz şekilde artıracak bir teknolojidir. Esasen container teknolojisi Docker’a özel değil fakat Docker pratiklik ve kolaylığı, güçlü destek ve topluluğu ile alternatifleri arasında öne çıkıyor.

Docker, Docker Swarm ile birlikte onlarca, hatta yüzlerce sunucuyu birlikte çalıştıracak kapasiteye geldi ve Kubernetes gibi rakipleri ile karşılaştırıldığında kurulum ve yönetimi inanılmaz kolay ve çoğu büyük ölçekli uygulama için bile fazlası ile yeterli.

Docker ve Container teknolojisi nedir?

Docker Linux container teknolojisi üzerinde kurulmuş açık kaynaklı bir proje. Docker 2013 yılında ilk yayınlandığında daha sonra standart haline gelecek container teknolojisinin de temellerini atmış oldu. Container’ler geliştirdiğimiz yazılımları çalıştıkları ortamdan izole etmemizi sağlayan birimlerdir. Yerel bilgisayarımızda gayet güzel çalışan kodların, canlı ortamda gerçek sunucularda çıkardığı sorunlardan bizi kurtarırlar.

Docker’ın her ne kadar sanal makinelere benzer bir mantığı olsa da, onlardan farklı olarak bütün bir işletim sistemini sanal olarak oluşturmak yerine uygulamaların ana linux kernel’inin özelliklerini kullanmasını sağlayarak çok daha az sistem kaynağı ile daha verimli işlem gücü sağlar. Her ne kadar linux kernel’e ihtiyacı olsa da geliştirme amaçlı kullanım için Windows tabanlı bir makineye kurulum yapmanız da mümkün. Bu durumda Docker otomatik olarak bir linux sanal makina oluşturarak bunun üzerinde çalışıyor. Üretim ortamı için tavsiye edilense tabii ki doğrudan linux tabanlı bir işletim sistemi ile birlikte kullanmak.

Docker kimin için? Kime ne fayda sağlar?

Docker hem yazılım geliştiriciler, hem de sistem/sunucu yöneticileri için avantajlar sağlıyor. Docker geliştiricileri “aman acaba bu kod production’da çalışacak mı” veya “production’da sorunsuz çalışması için neleri düşünemliyim” derdinden kurtartıyor. Sunucu yöneticileri de donanımı daha verimli kullanıp, onlarca-yüzlerce sunucuyu daha rahat yönetip, hataları daha kolay bertaraf edebiliyorlar.

Nasıl Docker öğrenirim?

Docker’ın çok kapsamlı bir dokümantasyonu var. Her ne kadar çok ileri seviye uygulamalar için yeterli olmasa da başlangıç, hatta orta seviyede Docker öğrenmek için fazlası ile yeterli olacaktır. Takıldığınız bir durum olursa çoğunlukla Docker forumlarında konunun sorulduğunu ve ayrıntılı cevaplandığını göreceksiniz.

Güncelleme; Bu yazıyı yazdıktan sonra Docker ve Portainer kurulumu ile ilgili aşağıdaki yazıyı yazdım

Docker’ı kavradığınızda bir sonraki adım birden fazla sunucu ile bir cluster kurmanızı sağlayan Docker Swarm öğrenmek olacaktır. Bunu bilgisayarınızda sanal makineler kurarak yapabilir veya bulut sağlayıcılarından birinde düşük özellikli sanal makineler üzerinde çalışabilirsiniz.

Güncelleme; Bu yazıyı yazdıktan sonra Docker Swarm ile ilgili aşağıdaki yazıyı yazdım.

Docker’a giriş yaptığımız bu yazıdan sonra gelecekte örnek container kurulumları, container image’ı oluşturma, ve 3 makineli bir Docker Swarm cluster kurulumunu örneklerle açıklayan yazılar yazmayı düşünüyorum. Siz de yorumlarınızla beni yönlendirirseniz memnun olurum.