Uzun bir süredir Yazılım Geliştirme, Yazılım Dağıtımı, Bakımı ve Operasyonlarından izole edilmiştir. Docker’ın ortaya çıkmasıyla birlikte, Geliştiriciler artık dağıtım, yapılandırma ve işletim hakkında bilgi edinmenin kolay bir yoluna sahipler ve bu da, sektörde en çok aranan ve iyi ücretli rollerden biri olan DevOps olarak bildiğimiz şeyin ortaya çıkmasını sağlıyor.
Docker Kapsayıcıları ayrıca, teknolojide artık standart olarak kabul edilen birçok endüstri trendinin ateşlenmesine yardımcı oldu; bunlardan bazıları şunlardır: otomatik CI/CD Boru Hatları, Mikro Hizmetler, Sunucusuz mimariler vb.
Docker Tanımı: Docker, uygulamalarımızı, tüm gerekli işletim sistemi kitaplıkları ve bağımlılıklarıyla birlikte, kapsayıcılar adı verilen konuşlandırılabilir yürütülebilir dosyalar halinde paketlememize olanak tanıyan bir platformdur.
Bu da, uygulamalarımızı temel alınan altyapıdan/donanımdan ayırabileceğimiz anlamına gelir ve bu da hızlı geliştirme, test etme ve dağıtıma olanak tanır.
Neden Docker?
(Docker) Konteynerler ile Sanal Makineler arasındaki ana ayırt edici faktör, Konteynerlerin VM’ler gibi tüm fiziksel makineyi sanallaştırmak yerine yalnızca işletim sistemini sanallaştırmasıdır.
Bu, Container’ların kendilerinin tüm bir işletim sistemi içermediği anlamına gelir ve bu da onları alternatifinden önemli ölçüde daha hafif, daha hızlı, daha taşınabilir ve esnek hale getirir.
Docker, Container’ların tüm yaşam döngüsünü yönetmek için platform ve araçları sağlar.
Docker’ın başlıca faydaları:
1-Basitlik
Docker, sanallaştırmanın tüm ağır yükünü tek bir paket kullanarak ve kendi başına yöneterek, yazılım geliştirmeyi operasyonlarla entegre etmenin karmaşıklığını ortadan kaldırır.
2-Hız
Her şeyi farklı bir makinede veya ortamda tekrar yapmak, ortamı ayarlamak için saatler veya günler harcamak yerine, istediğiniz an, uygulamanızı saniyeler veya dakikalar içinde çalışır duruma getirebilirsiniz. Daha hızlı yazılım döngüsü, ekibinizin çok daha çevik olabileceği anlamına gelir.
3-Taşınabilirlik
Docker Görüntüleri (yani bir Konteynerin planı) oluşturulduktan sonra değişmez olduğundan, bunları Docker’ı destekleyen herhangi bir ortama dağıtabilirsiniz ve tam olarak yerel makinenizde çalıştığı gibi çalışır. Bu, uygulamanızı Bulut sağlayıcılarına, şirket içi veya hibrit bir ortama sorunsuz bir şekilde entegre edebileceğiniz anlamına gelir.
4-Yeterlilik
Kapsayıcılar, ana bilgisayar işletim sistemi çekirdeğinin kaynaklarını paylaştığından, sanal makinelerin aksine birden çok kapsayıcıyı çalıştırmak için çok daha az kaynak gerekir. Böylece, donanım kaynak kullanımı çok daha verimlidir.
5-Yatay Ölçeklenebilirlik
Sisteminizi kapsayıcılar kullanarak tasarlamanın başlıca faydalarından biri, sistem bileşenlerinizin varsayılan olarak yalıtılmış olmasıdır. Sistem bileşenleriniz arasında yalıtım/gevşek bağlantı olması, bunları bağımsız olarak geliştirip dağıtabileceğiniz anlamına gelir. Bazı bileşenler diğerlerinden daha fazla yüke sahipse, basitçe, daha fazla makine ekleyin, daha fazla konteyner çalıştırın ve ölçeği genişletmek için bunları dengeleyin.
*** Google, Netflix, Uber vb. devler bu şekilde sınırsız ölçeklenebilirlik elde edebilmekte. ***
6-Teknoloji Yığını Özgürlüğü
Docker, Container’larınızda hangi dili, kitaplığı veya frameworku kullandığınızı umursamaz veya kısıtlamaz. Böylece geliştirici olarak siz, seçtiğiniz araç ve frameworkler ile yenilik yapabilirsiniz.
7-Açık Kaynak ve Topluluk Desteği
Açık kaynak ve kullanımı kolay olması, Docker’ın geniş çapta benimsenmesini sağlayarak işbirliği ve topluluk desteği getirdi.
*** Konteynerler harika olsa da, her çözüme uyum sağlayamazlar. Birkaç kapsayıcı aynı ana makinede çalıştığından ve donanımı sanallaştırmadığından, VM’lere kıyasla daha düşük düzeyde yalıtım sağlarlar. Bu, önemli bir husus olabilecek bazı niş projelerde güvenlik veya uyumluluk sorunlarına yol açabilir. ***