Uygulama oluşturma, çalıştırma, yönetme, dağıtım süreçlerinin çok daha basit bir hale gelmesini sağlayan yazılım platformu Docker olarak isimlendirilmektedir. Açık kaynaklı bir yazılım platformu olan Docker, günümüzde milyonlarca uygulama tarafından kullanılmaya devam edilmektedir. Kurulumunun gerçekleştirildiği bilgisayarlarda, işletim sistemini sanallaştırmaktadır. Bu sayede uygulama katmanında soyutlama gerçekleşmektedir. Aynı zamanda uygulamaların altyapıdan ayrıştırılmasında da etkili bir role sahip olduğu gözlemlenmektedir.
Çok daha kapsamlı bir şekilde bahsedecek olursak Docker 2008 yılında Solomon Hykes tarafından kurulmuştur. Tanıtımı 2013 yılında gerçekleştirilmiş ve o günden bugüne dünya genelindeki pek çok dev markanın dikkatini çekmiştir. Yenilikçi, geliştirilen teknolojilere yatırım yapan markalardan destek almıştır. Container bağlantılı uygulamaların hazırlanması amacıyla kullanılan Docker ticari versiyonu ise Docker Inc. tarafından satışa sunulmuştur. Sektöründeki liderlerden biri olarak temel özellikleri ve kullanım alanlarıyla avantajlı bir seçenek olduğu gözlemlenmektedir.
Docker hakkında bilgi sahibi olabilmek için öğrenilmesi gereken temel kavramlardan birisi ise container olarak tanımlanmaktadır. Container teknolojisi bulut bilişimde kullanılmaktadır. Aynı zamanda VM ihtiyacı olmadan çeşitli işletim sistemi platformlarında uygulamaların çalışması amacına hizmet etmektedir. Test aşamasında olan yazılım geliştirme çalışmalarının çok daha kolay bir şekilde tamamlanmasını sağlamaktadır. Container sayesinde uygulamalar daha basit bir şekilde dağıtılmaktadır. Uygulamaların yaşayabileceği yalıtılmış ortamın oluşturulmasına zemin hazırlamaktadır. Taşınabilir olmasının yanında işletim sisteminin yeniden kullanılabilir hale gelmesini sağlamaktadır.
Docker Ne İşe Yarar?
Teknolojiyle ilgili araştırmalar yapan, yenilikleri takip eden birçok kişi Docker ne işe yarar şeklinde sorular yöneltmektedir. Bu konuda bilgi sahibi olmak isteyen kişilerin bilmesi gereken detaylardan birisi Docker yazılım platformunun yeni nesil sanallaştırma ile ilgili bir kavram olduğudur. Yani aynı işletim sisteminde çalışması mümkün olan, uzaktan bağlantı sağlanan Docker ve sunucu mimarisi ortak kullanılmaktadır. Daha fazla detay verecek olursak da Docker geliştirilmekte olan uygulamaların ilerleyebilmesi, gerekli testlerden geçirilmesi ve kullanılmak üzere devreye alınması gibi süreçleri kolaylaştırmaktadır. Bileşenlerin birleşmesini daha hızlı hale getiren yazılım platformu, kod gönderimi sırasındaki hataları en aza indirmektedir. Örnek verecek olursak aynı sistemde kullanılan uygulamaların farklı sürümlerinden yararlanılabilmektedir. Farklı iki Docker ile uygulama ayrı şekilde kullanılabilmektedir.
Docker açık kaynaklı yazılım platformu, kodların olabilecek en hızlı şekilde test edilmesini sağlamaktadır. Kullanım açısından incelendiği zaman ise bir hayli kolay bir yapısının olduğu anlaşılmaktadır. Platform içerisinde kullanabileceğiniz tüm özellikler CLI ile beraber sunulmaktadır. Ayrıca uygulama kodlarının bilgisayarın sunucusuna taşınmasını daha kolay hale getirmektedir. Hemen her noktada çalışmaya uygun bir yazılımdır. Bu da masaüstü, sanal makine, veri merkezleri gibi dağıtımların gerçekleşebileceği anlamına gelmektedir.
Docker Nasıl Çalışır?
Docker yazılım platformu sayesinde geliştirmiş olduğunuz uygulamaları hızlı bir şekilde test edebilir, derleme ve dağıtma işlemlerini gerçekleştirebilirsiniz. Başarılı bir yazılım platformu olmasının yanı sıra yazılımın çalışması için gerekli olan hemen her şeyi container içerisinde paketlemektedir. Container birimlerinde kod, yazılım kitaplıkları, çalışma zamanı ve sistem araçları gibi seçenekler bulunmaktadır. Kullanımı sırasında hemen her ortama uygum sağladığı gözlemlenmektedir. Ayrıca kullanım süreçlerinde uygulamanın dağıtımı her ortam için hızlı bir şekilde gerçekleştirilmektedir.
Docker nasıl çalışır sorusuna cevap vermeden önce içerdiği terimler hakkında bilgi sahibi olmak da önemlidir. Kısa bir özet geçecek olursak uygulamaları barındıran container seçeneklerinin oluşturulması için kullanılan paketler İmage olarak isimlendirilmektedir. Container ise İmage seçenekleri için önceden hazırlanan, çalışmaya hazır hale getirilen ortamlara denilmektedir. Image üretimi sırasında belirlenen komut ve kuralları kapsayan Docker dosyası ise Dockerfile olarak tanımlanmaktadır. Genel olarak incelendiği zaman sanal makineye benzeyen Docker sanal makineden farklılıklara sahiptir. Örnek olarak tamamen uygulama üzerinde çalışılan sistemle aynı Linux sistemini kullanmayı sağlamaktadır. Böylece uygulamaların performans değerlerinin önemli ölçüde artmasına yardımcı olmaktadır. En önemli nokta ise açık kaynak kodlu olmasıdır. Bu da Docker yazılım platformunun geliştirilmesi için herkesin belirli bir katkıda bulunabileceği anlamını taşımaktadır.
Linux container üzerine kurulan Docker, tıpkı Linux işletim sisteminde olduğu gibi birbirinden farklı konteynerlerle hazırlanmaktadır. Farklı olan konteynerlerin çoğaltılması da oldukça basittir. Çünkü her birinde process kullanımı söz konusudur.
Docker Neden Kullanılmalı?
Piyasaya sürüldüğünden bu yana bulut içerisinde hem yerel hem de hibrit çözümlerden yararlanan şirketler artış göstermektedir. Bu durum Docker yazılım platformunun da giderek çok daha fazla popülerleşmesinde önemli bir rol oynamıştır. Docker neden kullanılmalı sorusuna kapsamlı bir cevap verecek olursak da öncelikli olarak yazılım geliştirme projelerinde yer edinmektedir. Ayrıca uygulamaların başarılı bir şekilde teslim edilmesinde etkisinin olduğu görülmektedir. Yazılım, BT hizmetleri, sağlık, finans gibi hizmetlerde kullanılan Docker bazı alanlarda oldukça etkilidir. Sıralayacak olursak:
- Docker yazılım geliştirme faaliyetlerinin standartlaştırılması, çok daha basit hale gelebilmesi gibi amaçlarla hizmet etmektedir.
- Yazılım ve uygulama geliştiricilerin manuel ve otomatik testleri başarılı bir şekilde kullanabilmelerini sağlamaktadır. Bunun için ise test uzmanları ile paylaşımların sorunsuz bir biçimde gerçekleşmesine zemin hazırlamaktadır.
- Ücretsiz yazılım platformu olan Docker geliştirici ekibine katılanların çalışmalara başladıkları andan itibaren verimli olmalarını sağlamaktadır. Çalışmaların manuel bir şekilde yapılmasının aksine, otomatik bir şekilde sürdürülmesine yardımcı olmaktadır. Böylece geliştiriciler işlemlerin tek bir komut üzerinden gerçekleşmesini kolaylaştırmaktadır. Bu durum çalışmalarda ciddi zaman kazançlarının yaşanmasında da etkilidir.
- Proje ve uygulamaların geliştirilmesi, testten geçirilmesi gibi durumlarda olası hataların düzeltilmesinin çok daha kolay olmasını sağlamaktadır. Yazılımların karmaşıklığı halinde, takip ve düzenleme işlemleri karmaşık bir hal almaktadır. Docker kullanılmadığı durumlarda projelerin kurulumu için gerekli değişiklikler geliştiricilere iletilmelidir. İletimin sağlanmaması halinde kod sürümlerinin çalışması durabilmektedir. Bu durum gerçekleşirken nedeni anlaşılmayabilmektedir.
- Docker ile hazırlanan uygulamaların her ortamda çalıştırılabilmesi mümkündür.
- İşletmelerin gereksinimlerine uygun olacak şekilde uygulamaların büyüyüp küçülmesi, iş yüklerinin düzenlenmesi sağlayabilmektedir. Küçük ölçekli internet sitelerinde barındırma altyapısı karmaşık değildir. Buna karşın markaların gelişip büyümesi halinde sunucu ile alakalı olan gereksinimler de farklılık göstermektedir. Hızlı bir trafik ve tempo içerisinde internet sitenizin çökmesini engellemektedir. Ayrıca altyapı maliyetlerinin de bütçenize uyum sağlamasına yardımcı olmaktadır.
- Farklı teknolojileri kullanmak isteyenler için kullanışlı bir alternatif olarak nitelendirilmektedir. Yeni bir programlama dili deneyimlemek, yeni bir veritabanı kullanmak gibi taleplere uyum sağlamaktadır.
Docker Hangi Durumlarda Kullanılmalıdır?
Hızla ilerleyen teknoloji dünyasındaki bazı kavramlar, kullanıcıların soru işaretleriyle karşılaşmasına yol açabilmektedir. Söz konusu kavramlar arasında Docker da yer almaktadır. Docker hangi durumlarda kullanılmalıdır şeklinde birçok soru yöneltilmektedir. Bu soruya cevap olarak birden fazla kullanım alanının bulunduğunu söylemek mümkündür. En açıklayıcı şekilde ifade etmek gerekirse Docker uygulamaların hızlı bir şekilde birleştirilmesi, gerekli testlerden geçirilmesi ve dağıtımının yapılması için kullanılmaktadır. Bu alanlarda önemli bir yere sahip olan, yazılım ve uygulama geliştirme süreçlerine destek olan başarılı bir platform olarak bilinmektedir.
Kullanım alanları arasında az kaynak ile pek çok iş yükü çalıştırmak mümkündür. Aynı zamanda geliştirme süreçlerindeki tutarlılığın sağlanmasına katkısı büyüktür. Ayırma ve yalıtım uygulamaları, geliştirme döngüsünü kolaylaştırma gibi artları bulunmaktadır. Çoklu bulut platformlarında iş yükünün geliştirilmesine katkı sağlamaktadır. Tüm bu seçeneklere ek olarak uygulamalar için sürüm kontrol mekanizması şeklinde kullanılmaktadır. Ayrıca sanal makinelerle kıyaslandığında çok daha bütçe dostu bir alternatif olarak yorumlanmaktadır.
Docker’ı Kimler Kullanılır?
Docker nedir, ne işe yarar sorularına ek olarak Docker’ı kimler kullanılır tarzında araştırmalar yapılmaktadır. Konuyla alakalı derinlemesine bilgi sahibi olmak isteyenler, geliştiriciler için en etkili şekilde tasarlandığını gözlemlemektedir. Açık uygulama geliştirme platformu olarak geliştiricilerin ihtiyaç ve beklentilerine uyum sağlamaktadır. Uygulama ve yazılım geliştirme alanında çalışan kişilerin her yerde çalışabilmesine ortam hazırlamaktadır. Hafifliği, taşınabilir yapısı sayesinde kullanımı kolaylaşmaktadır. Aynı zamanda gönderme, paketleme ve çalıştırma süreçlerinde birçok avantaj sağlamaktadır.
Uygulama geliştiricilerin Docker ile çalışabilecek şekilde tasarlanan pek çok açık kaynaklı uygulamadan yararlanması mümkündür. Docker, yazılım ve uygulama geliştirme ekipleri için sürekli olarak entegrasyon içerisindedir. Uygulamaları yönetmek ve geliştirmek için ortaya çıkan karışıklığı en aza indirmektedir. Aynı zamanda sistem içerisinde var olan kısıtlamaların azalmasına yardımcı olmaktadır.
Docker Nasıl Kurulur?
Teknik açıdan hemen her yazılım uygulamasının geliştirilmesi amacıyla kullanılan Docker kurulumu oldukça basittir. Öncelikli olarak Docker yazılım platformunun resmi web sitesine giriş yapmanız gerekmektedir. Sizin için uygun işletim sistemi eklentisini indirmeniz istenmektedir. İlgili indirme işlemlerini doğru bir şekilde tamamlamalısınız. Sonrasında ise Docker yazılım platformunu indirebilirsiniz. Docker indirme işleminin ardından çalıştırmanız gerekmektedir. Burada ise komut sistemini açmanız beklenmektedir.
Docker indirme işlemi için Windows üzerinden ilerliyorsanız, işletim sisteminin özelliklerini ayarlamalısınız. Windows dosyalarını etkinleştirmelisiniz. Burada denetim masasına gidebilir, programlar bölümünden özelliklere girebilirsiniz. “Windows özelliklerini aç veya kapat” seçeneğine gitmelisiniz. Burada karşınıza çıkan sekmede “Hyper-V, Linux için Windows alt sistem ve sanal makine platformu seçeneklerini onaylamalısınız.
Docker’ın Avantajları Nelerdir?
Dünya genelinde aktif bir şekilde kullanılmakta olan Docker ülkemizde tanınan, büyük şirketler tarafından da kullanılmaya devam edilmektedir. Bu denli popüler bir hal alması, Docker’ın avantajları nelerdir sorusunu beraberinde getirmektedir. Örneklendirecek olursak;
- Docker maliyet açısından tasarruf sağlamanıza yardımcı olmaktadır. Altyapı giderlerinin en aza indirilmesi, yatırımda getirisinin olması gibi katkıları mevcuttur. Ayrıca Docker yazılım platformu, uzun vadede direkt olarak nakit paraya dönüştürülebilmektedir. Bu durum uygulamaların çalıştırılması için gerekli olan kaynakla orantılı olduğu anlamına gelmektedir. Yani uygulamaların çalışmasında kullanılan kaynakların az olması, maliyetlerin de azalmasına yol açmaktadır. Bunun sonucunda Docker yazılım geliştirme faaliyetleri için gerekli olan harcamaların daha az olacağı gözlemlenmektedir.
- Docker için öne çıkan avantajlar arasında taşınabilirlik yer almaktadır. Uygulamaları farklı ortamlarda taşınmasını sağlamaktadır. Bunun sonucunda nerede olursanız olun uygulamaları çalıştırabilir, performans değerlerinizde düşüşle karşılaşmazsınız.
- Docker avantajları arasında izolasyon bulunmaktadır. Uygulamaların ihtiyacı olan çalışma ortamına sahip olmaları, çeşitli uygulamalardan korunmaları gibi katkıları vardır. Ayrıca ek uygulamaların yapılan değişikliklerden etkilenmesine de engel olmaktadır.
- Docker geleneksel sanal makinelerle kıyaslandığında çok daha az kaynak harcamaktadır. Bu yüzden kaynak verimliliği sayesinde hafızalara kazınmaktadır. Kaynak verimliliğine sahip olmak isteyenler için ideal bir tercih olarak değerlendirilmektedir. Bu durum aynı zamanda donanım giderlerinin de azalması anlamına gelmektedir.
- Uygulamaların geliştirme süreçlerinin daha kolay hale gelmesini sağlamaktadır. Geliştiricilerin üretim için kullandıkları ortamların artması, uyumla ilgili problemlerin azalması gibi katkıları bulunmaktadır. Aynı zamanda dağıtımın daha otomatik bir hal almasını sağlamaktadır. Kullanıcıların hata oranlarının düşmesi ve bu sayede zamandan tasarruf edilebilmesi gibi avantajları bulunmaktadır.
Docker ile İlgili Çok Sorulan Sorular
Docker Görüntüsü Nedir?
Container seçeneklerinin tanımlanmasını sağlayan şablonlar, Docker görüntüsü olarak tanımlanmaktadır. Görüntü içerisinde kodun gerekli olduğu bağımlılıklar ve kitaplıkları kapsamaktadır. Docker görüntüsü olarak Docker container örnek gösterilebilmektedir. Ayrıca Docker görüntülerin değiştirilmesi mümkün değildir. Görüntü içerisinde herhangi bir değişiklik yapılmak istendiği zaman yeni bir görüntü hazırlanmalıdır. Görüntülerin indirilmesi içim Docker kayıt defteri kullanılmaktadır. Aynı zamanda Docker kayıt defterinde görüntüleri depolayabilmek mümkündür.
Çok Kullanılan Docker Komutları
Container yönetim süreçlerinin daha kolay bir hal almasını sağlayan Docker platformunda çok kullanılan bazı temel komutlar bulunmaktadır. Yaygın olarak kullanılan Docker komutlarına örnek verecek olursak;
- Docker Ps: Çalışmakta olan container için imaj, durum gibi önemli bilgilendirmeleri aktarmaktadır.
- Docker Run: İmajlar ile container başlatma amacına hizmet etmektedir. Kullanılabilecek çalıştırma seçenekleri ve komutlar hakkında bilgi vermektedir.
- Docker Stop: Çalışmaya devam eden konteynerlerin durdurulması sırasında içerisinde bulunan süreçleri sorunsuzca sona erdirmektedir.
- Docker Pull: Container kayıtlarından alınan imajların yerel makineye iletilmesini sağlamaktadır.
- Docker Login: Docker kayıt defterine giriş yapabilmek amacıyla kullanılmaktadır. Platform içerisinde var olan özel depolara erişimi sağlamaktadır.
Docker ve Sanal Makine Arasındaki Farklar Nedir?
Docker bir uygulamaya ek olarak gerekli olan yapılandırma dosyalarını, ikili dosyaları kapsamaktadır. Var olan her bir container için gerekli bir işletim sistemi çekirdeği bulunmamaktadır. Bundan ötürü oldukça hafif olduğu bilinmektedir. Her biri için var olan işletim sistemi çekirdeğini kullanmaktadır. Bundan ötürü yalnızca temek kaynakları kullanıp diğer container seçenekleriyle beraber çalıştırılabilmektedir. Sanal makine ise bir hipervizör üzerinde çalışmaktadır. Her bir sanal makineye ait uygulama, işletim sistemi kullanılmaktadır. Böylece sanal makinelerde, Docker container seçenekleri ile kıyaslandığında çok daha fazla kaynak gerekmektedir. Bu durum, sistemin yavaşlamasına da yol açmaktadır.
Microservice Mimarisinde Docker Neden Önemli?
Docker microservice mimarisinde sunucu maliyetlerinin düşmesi, sunucu kaynak tüketiminin azalması gibi katkılar sağlamaktadır. Microservice bünyesinde var olan küçük uygulamalara benzerlik göstermemektedir. Bundan ötürü farklı ortamlar elde edebilmek için microservice seçeneklerinin VM örneklerine dağıtımı sağlanmalıdır. Ayrıca bir sanal makinenin tümüyle piyasaya sürülebilmesi, tanıtımının yapılabilmesi için etkili değildir. Yani küçük bir bölümün dağıtımı için yeterli olmamaktadır. Bundan ötürü Docker ile performans değerleri en aza indirilmektedir. Bu durum tek bir sunucu içerisinde binlerce Microservice dağıtımının gerçekleştirilebilmesi anlamına gelmektedir. İkisi arasındaki temel fark ise Docker içeriklerinin sanal makinelerle kıyaslandığında daha az sistem kaynağı gerektirmesidir. Dağıtım için gerekli olan yazılım araçlarına göre sahip olduğu özellikler de daha fazladır. Böylece dağıtım süreçlerinde ekstra bir rahatlık sağlamaktadır.