Docker Nedir? Docker Mimarisi

Günümüz teknolojisinin hızla ilerlemesiyle beraber, yazılım geliştirme dünyasında bazı kavramlar ve araçlar ön plana çıkmaya başladı. Bu kavramlardan en öne çıkanlardan biri de “Docker” kavramıdır. Peki, Docker nedir? 

Docker Nedir? 

Docker, uygulamalarınızı hızla geliştirmeniz ve dağıtmanız için kullanılan bir platformdur. Docker ile uygulamanızı, bağımlılıklarıyla birlikte bir “container” içerisine paketleyebilir ve bu container’ı herhangi bir ortamda çalıştırabilirsiniz.

Özetle: 

 ⇒  Uygulamalarınızı her ortamda tutarlı bir şekilde çalıştırma imkanı sağlar.

 ⇒  Geliştirme, test ve üretim ortamlarınızı senkronize tutabilirsiniz.

 Örnek:  Geliştirici A, bir Python uygulaması geliştiriyor ve bu uygulama sadece Python 3.8’de çalışıyor. Docker ile bu uygulama için bir container oluşturduğunda, bu container her zaman Python 3.8 ile çalışacaktır. Bu, uygulamanın başka bir makinede veya sunucuda da aynı şekilde çalışacağı anlamına gelir.

Hangi Probleme Çözüm Olarak Ortaya Çıktı?

Geleneksel yazılım dağıtım yöntemlerinde, uygulamanın bir sistemden diğerine taşınmasında birçok sorun yaşanıyordu. Özellikle “Benim bilgisayarımda çalışıyordu” türünde problemler, uygulamanın çalıştığı ortamın farklı olmasından kaynaklanıyordu. Container teknolojisi, bu bağımlılıkları izole ederek ve uygulamanın ihtiyaç duyduğu tüm kaynakları bir paket içerisine alarak bu sorunlara çözüm sunmaktadır.

Sanallaştırma Nedir? ve Docker ile Farkı Nedir?

Sanallaştırma, fiziksel bir makinede birden fazla sanal işletim sistemi çalıştırma teknolojisidir. Docker’ın sanallaştırmadan farkı:

 ⇒  Docker doğrudan işletim sistemi kernel’ı üzerinde çalışırken, sanallaştırma tamamen ayrı işletim sistemleri oluşturur.

 ⇒  Docker container’ları daha hafiftir ve daha az kaynak kullanır.

 Örnek:  VMware veya VirtualBox, sanallaştırma için kullanılan popüler araçlardır. Bir VMware sanal makinesi oluşturduğunuzda, bu makine tamamen ayrı bir işletim sistemi yükler. Docker’da ise, mevcut işletim sistemi üzerinde hafif ve izole container’lar oluşturursunuz.

Docker’ın Tarihçesi

Yaklaşık 13 yıl önce, Solomon Hykes, dotCloud adlı bir şirkette bulut tabanlı uygulamalar için bir platform oluşturmaya çalışıyordu. Ancak, bu platformun parçası olarak bir araç gerekiyordu ve bu araç sonradan Docker adını alacaktı.

2013 yılında, Solomon, bir yazılımcılar konferansında bu yeni “Docker” adındaki aracı tanıttı. Temelde, bu araç, yazılımları her yerde aynı şekilde çalıştırmayı amaçlayan bir “container” oluşturma fikrine dayanıyordu.

Docker hızla popülerlik kazandı ve açık kaynaklı hale geldi. Bu, dünyanın dört bir yanından insanların Docker’a katkıda bulunmasını sağladı. 2014’te, Docker artık sadece bir prototip olmaktan çıkıp gerçekten kullanılabilecek bir ürün haline geldi. Yani versiyon 1.0 doğdu.

Yıllar ilerledikçe, Docker ek özellikler ekledi ve diğer teknolojilerle entegrasyonlar kurdu. Örneğin, Kubernetes adında başka bir popüler araçla birlikte çalışabilir hale geldi.

Günümüzde, Docker, yazılım geliştiren hemen hemen herkes tarafından tanınan ve kullanılan bir araç haline geldi. Birçok büyük şirket, uygulamalarını Docker konteynerlerinde çalıştırıyor. 

Docker Mimarisi

Docker, yazılımları çalıştırma ve dağıtma konusunda devrim yaratmış bir teknolojidir. Peki bu nasıl işliyor?

 Docker Host 

Docker Host, Docker Daemon’un çalıştığı sunucu veya bilgisayardır. Konteynerlerınız bu host üzerinde çalışır. Genelde bu, bir VM (Sanal Makine) veya fiziksel bir sunucu olabilir. Fakat asıl önemli olan, üzerinde Docker Daemon‘un çalışıyor olmasıdır.

 Docker Client 

Docker ile etkileşimde bulunduğumuz yer burasıdır. Yani, Docker’a “Bir container başlat” veya “Bir image oluştur” gibi komutları bu client üzerinden veririz.

 Docker Daemon 

Bu, gerçekte tüm işi yapan kısımdır. Client’ten gelen komutları alır ve konteynerleri başlatır, durdurur, imajları oluşturur ve çok daha fazlasını yapar.

 Docker Image 

Bir Docker imajı, uygulamanızı çalıştırmak için gerekli olan tüm dosyaları, kütüphaneleri ve bağımlılıkları içeren bir şablondur. Örneğin, bir web sunucusunu Docker ile çalıştırmak istiyorsanız, bu sunucu için bir imajınız olmalı.

 Docker Container 

İmajı kullanarak başlattığınız çalışan sürece “container” denir. İmaj, bir kitapta tarif edilen yemeğe benzer, container ise bu tarife göre pişirilmiş gerçek yemektir.

 Docker Registry (Docker Kayıt Defteri) 

Burası, Docker imajlarının saklandığı yerdir. En popüler Docker Registry, Docker Hub‘dır. Burada birçok hazır imaj bulabilir veya kendi imajlarınızı saklayabilirsiniz. Diğer insanlar tarafından oluşturulan imajları indirebilir veya kendi imajlarınızı başkalarıyla paylaşabilirsiniz.

 Ağ ve Veri Yönetimi 

Docker, konteynerler arasında ağ oluşturma yeteneğine sahiptir. Bu, farklı konteynerlerin birbiriyle veya dış dünya ile iletişim kurmasını sağlar.

Ayrıca, konteynerlerde çalışan uygulamaların verilerini saklamak için özel veri hacimleri oluşturabilirsiniz. Bu, konteyneri durdursanız veya silseniz bile verilerinizi korumanıza yardımcı olur.

Nasıl Çalışır?

Bir örnek üzerinden Docker Mimarisinin nasıl çalıştığına bakalım:

 1  Örneğin, bir container başlatmak istiyorsunuz. Terminalde docker run komutunu yazdınız.

 2  Bu komutu yazdığınızda, Docker Client bu talebi alır.

 3  Docker Client, Docker API’sini kullanarak bu talebi Docker Daemon‘a iletir.

 4  Docker Daemon, bu talebi işler, gerekli Docker imajını kullanarak bir container başlatır (veya imajı Docker Registry’den indirir eğer yerelde bulunmuyorsa).

 5  Container, Docker Host üzerinde başlatılır ve çalışmaya başlar.

Docker ve container teknolojisi, yazılım dağıtım ve geliştirme süreçlerini hızlandırmada devrim yaratan araçlardır. Bu teknolojilerin kullanımı, uygulamaların daha hızlı, güvenli ve sorunsuz bir şekilde dağıtılmasına olanak tanır. Aynı zamanda geliştirme ve üretim ortamlarının tutarlılığını artırarak, “Benim bilgisayarımda çalışıyordu” sorununu tarihe karıştırıyor.

Umarım “Docker Nedir? Docker Mimarisi” başlıklı yazım sizin için faydalı olmuştur.

Yeni bir yazımda görüşmek üzere.

Happy coding!

Yorum Yazın