Docker Nedir ve Neden Kullanılır?
Docker, bir uygulamanın çalışma koşullarını (özellikle de uygulamanın bağımlı olduğu ortamı) bir container olarak paketleyip, bu container'ı da bir imaj olarak saklar. Böylece uygulama, imajı kullanarak herhangi bir ortamda çalıştırılabilir ve bu ortamlar arasında portability (taşınabilirlik) sağlar. Bu sayede, Docker ile oluşturulan bir container bir sistemde çalıştırıldığında, o sistemde o uygulama tamamen aynı şekilde çalışır.
Docker olmadığı zamanlarda sanal makineler kullanarak uygulamalarımıza bir çalışma alanı tahsis ediyorduk. Fakat sanal makineler, ana makinenin üzerinde sabit bir kaynak (Disk, RAM, CPU) tahsis edilerek ve sıfırdan işletim sistemi kurarak oluşturulur. Kurulan bu işletim sisteminin kendisi bile büyük bir kaynak tüketir. Bu verimsizliğe çözüm olarak Docker teknolojisi geliştirilmiştir.
Sanal makinelerin aksine, Docker, her seferinde yeni bir işletim sistemi kurmaya gerek kalmadan ana makinenin gerekli kaynak kodları ve kütüphaneleriyle ayağa kalkar. Bu durumda işletim sistemine ayrılan gereksiz kaynak problemi de çözülmüş olur ve uygulamları çalıştırma süresi oldukça hızlanır.
Docker, bir uygulamanın çalışma koşullarının container'a paketlenmesi sayesinde uygulamanın dağıtımı, kurulumu ve yönetimi kolaylaşır. Container, uygulamanın tüm gereksinimlerini (örneğin, kütüphane veya servisler) kapsar ve bu sayede uygulama, bir host ortamda çalışmaya başladığında bu gereksinimleri de kendisi ile birlikte getirir. Böylece uygulama, aynı ortamda çalıştığında veya farklı bir ortamda çalıştığında aynı davranışı gösterir.
Docker, ayrıca bir uygulamanın çalışma koşullarının paketlenmesini sağlarken aynı zamanda bu koşulların da bir imaj olarak saklanmasını sağlar. Böylece uygulama, imajı kullanarak herhangi bir ortamda çalıştırılabilir ve bu ortamlar arasında portability sağlar. Örneğin, bir uygulama geliştirme ortamında çalıştırılır ve bu ortamda dağıtılmış bir imaj oluşturulur. Bu imaj, test ortamında kullanılarak uygulamanın test edilmesine olanak sağlar. Eğer testler başarılıysa, bu imaj production ortamına dağıtılır ve bu şekilde uygulama, aynı koşullar altında çalışmaya devam eder.
Docker, bir container oluşturmak için Dockerfile adı verilen bir yapılandırma dosyası kullanır. Dockerfile, uygulamanın nasıl çalıştırılacağını ve hangi bağımlılıklarının yükleneceğini belirtir. Docker, bu Dockerfile'ı kullanarak bir container oluşturur ve bu container'ı bir image adı verilen dosya haline getirir. Bu image, daha sonra herhangi bir sistemde çalıştırılabilir.
Dockerfile hakkında detaylı bilgi almak için şu yazımızı okuyabilirsiniz:
Docker, ayrıca microservice mimarisi gibi çok parçalı uygulamalar için de oldukça uygundur. Bu mimaride, uygulama birbiriyle iletişim kurabilen ve farklı görevleri yerine getiren küçük servislerden oluşur. Docker sayesinde, bu servisler container'lar halinde çalıştırılabilir ve bu container'ların dağıtımı, kurulumu ve yönetimi kolaylaşır. Böylece, servisler arasındaki iletişim kurulması ve birbirlerini kullanmaları sağlanır. Ayrıca ortamlar arasındaki farklılıklar en aza indirilir ve uygulamanın çalışmasında problem yaşanmaz.
Docker, açık kaynaklı bir yazılım olup, Linux, macOS ve Windows gibi farklı işletim sistemlerinde çalışabilir. Docker'ın popülaritesi gün geçtikçe artmakta ve birçok büyük firma bu araçtan yararlanmaktadır. Eğer uygulamanızın dağıtımı ve çalıştırılmasında kolaylık ve esneklik istiyorsanız, Docker'ı deneyebilirsiniz.
Docker'ı kurulumu için sıradaki yazımızla devam edebilirsiniz.