İnceleme Teknoloji

Docker

Docker, taşıyıcı (container) tabanlı bir sanallaştırma teknolojisidir. Klasik sanallaştırma yöntemlerinden farkı, işletim sistemi seviyesinde sanallaştırma yapabilmesidir. 2013 yılında açık kaynak olarak yayınlanan Docker, bir SaaS şirketi olan dotCloud’un, kendi ihtiyaçlarını gidermek için ortaya koymuş olduğu bir teknolojidir. Başlarda sadece Linux destekleyen Docker, günümüzde Windows Server ve Solaris’i dahi desteklemektedir.

Taşıyıcı tabanlı sanallaştırma, klasik sanallaştırma yöntemi olan sanal makine bazlı sanallaştırmaya göre daha hafif yüklü ve oldukça performanslıdır. Docker, işletim sisteminin sunduğu sanallaştırma araçlarını kullandığından, tam bir CPU ve RAM sanallaştırmasına ihtiyaç duymadan, aynı işletim sisteminin çekirdeğini izole ve güvenli bir şekilde kullanabilir. Bu sayede, bir sanal makineye kıyasla çok daha kısa sürede açılan Docker taşıyıcısı, bir saniyenin altında kullanıma hazır olur. Ayrıca, Docker taşıyıcılarının dosyaları da kendilerine izoledir. Bu dosya sistemi katmanlı yapıda olduğundan, diğer taşıyıcılarla da paylaşılır. Bu sayede hem işletim sisteminin önbelliğinde tutulur hem de kopyalama olmadan, sadece dosyalardaki değişikliklerin tutulması ile hem hızlı hem de az yer kaplayan bir şekilde çalışabilir. Docker taşıyıcılarınızı hızlıca oluşturup kapatabilir, aynı anda onlarcasını az kaynak kullanımı ile çalıştırabilirsiniz.

Docker Hub adı verilen platform sayesinde dünyanın her tarafından insanların hazırlamış olduğu binlerce çalışmaya hazır imaj bulunmaktadır. Kullanıcının sadece “docker run” komutunu çalıştırması ile birlikte bu imaj Docker Hub’dan indirilir ve çalıştırılır. Bu sayede tamamen izole bir veritabanı, bir uygulama sunucusu ya da bir mikroservisi kolaylıkla sisteminizin konfigürasyonunu bozmadan ve iz bırakmadan kullanabilirsiniz. Kendi imajlarınızı da Dockerfile oluşturarak hazırlayabilir, ister Docker Hub üzerinden paylaşabilir, isterseniz Docker imajınızı bir arşiv dosyasına yazarak USB ile de taşıyabilirsiniz. Bu sayede, yerelde oluşturduğunuz geliştirme ortamının birebir aynısını ister canlı ortamda, isterseniz de yazılımınızı götürdüğünüz müşteride gerçekleştirebilir, uyumluluk sorunlarını sıfıra indirebilirsiniz. Çünkü bir Docker taşıyıcısında, o taşıyıcıyı çalıştırmak için gerekli ayarlar ve tüm dosyalar bulunmakta, işletim sisteminin sadece çekirdeği kullanılmaktadır. Örneğin, Ubuntu Docker imajını kullanarak, taşıyıcıya Java yükleyip kendi uygulamanızı koyduğunuzda, bu taşıyıcıyı çalıştırdığınız makinede Java ya da Ubuntu olması gerekmez. Java yüklü olmayan bir CentOS makinede de kolaylıkla çalıştırabilirsiniz. Farklı bir kullanım olarak da, Continous Integration (CI) ve Continous Delivery (CD) ortamlarınızda, yazdığınız koddan Docker taşıyıcıları üretilmesini, testlerin bir ya da birden fazla taşıyıcıda izole ve tekrarlanabilir olarak çalışmasını sağlayabilirsiniz. Böylece uygulama hattınızı rahatlatabilir, geliştiricilerinizin operasyondan çok geliştirdikleri kodlara odaklanmasını sağlayabilir, operasyondan sorumlu kişilerin de işlerini rahatlatabilirsiniz.

Docker, çeşitli alt projelerden oluşmaktadır. Taşıyıcı oluşturma, imaj yönetimi, ağ yönetimi gibi ana özelliklerin dışında birden fazla taşıyıcı yönetimi, birden fazla sunucudaki Docker motorlarının yönetimi gibi işlemler Docker’ın Compose ve Swarm modülleri ile yapılabilmektedir. Docker endüstride standart haline gelip Linux Foundation’a ait olan Cloud Native Foundation’da (CNF) da yer almasıyla birlikte herkes tarafından benimsenip kullanılmakta olan bir araç haline gelmiştir. Gerek kullanım kolaylığı ve gerek performansı sebebiyle geliştiricilere yeni olanaklar sağlamıştır.

http://www.docker.com

Mustafa Akın www.mustafaak.in