Docker Konteyneri Nedir? İşlev, Bileşenler, Faydalar ve Evrim
Yayınlanan: 2020-11-23'Docker', kapsayıcılar olarak adlandırılan paketler biçiminde yazılım sağlamayı amaçlayan Hizmet olarak ayarlanmış bir Platform (PaaS) ürünüdür. İşletim sistemi düzeyinde sanallaştırma standartlarını kullanır; burada çekirdek, kapsayıcılar, bölümler, bölgeler, sanal çekirdekler vb. gibi birden çok yalıtılmış kullanıcı alanı örneğine izin verir.
Bunlar, programların içlerinde çalıştırılma şeklini simüle eden gerçek bilgisayarlar gibi davranır. Normal bir işletim sisteminde, bilgisayar programının çalıştırdığı kaynakları görürüz. Kapsayıcılarda, yalnızca programlar içinde çalıştırıldığında, kapsayıcıya tahsis edilen içerikleri ve aygıtları görebiliriz.
Bugün sektördeki birçok geliştirici için Docker, masaüstü ve bulut genelinde kapsayıcılı uygulamalar geliştirmek ve paylaşmak için kabul edilen standarttır. Kapsayıcılar standartlaştırılmış bir yazılım birimidir. Geliştiriciler, bir uygulamayı ortamından izole etmek için kullanır. Hafif özellikleri nedeniyle, birkaç liman işçisi konteyneri (genellikle ana bilgisayar başına sekiz konteynerin üzerinde), aynı anda tek bir sunucuda veya VM'de çalıştırılabilir.
Docker, geliştiricilerin hafif ve taşınabilir yazılım kapsayıcıları oluşturması için tasarlanmıştır. Kapsayıcı paketleri, basitleştirilmiş uygulama geliştirme, dağıtım ve test işlemlerini kolaylaştırır. Başlangıçta Linux işletim sistemi için Docker'ı yaptılar. Ancak artık bir dizi işletim sisteminde çalışıyor: Linux, Windows, Datacenter, Cloud, Serverless, vb.
İçindekiler
Evrim
Açık kaynaklı bir proje olan Docker, 2013'te başlatıldı. Docker Inc., bunu bulut yerelini benimsemek için daha da geliştirdi ve bu da yazılım alanında kapsayıcılaştırma ve mikro hizmetlere yönelik bir eğilimle sonuçlandı. Docker, 'kurumsal sürümünü' 2017'de yayınladı.
Modern yazılım geliştirme, uygulamaları ortak bir ana bilgisayar veya küme üzerinde yönetme zorluğuyla karşı karşıyadır. Çalıştırma veya bakımla ilgili olarak etkileşimi ve birlikte çalışabilirliği önlemek için uygulamaları birbirinden ayırmaya ihtiyaç vardır. Bir uygulamanın çalışması için gereken paketlerin, kitaplıkların, ikili dosyaların ve diğer yazılım bileşenlerinin ilişkisi, uygulama geliştirmeyi yönetmek için çok önemli olarak kabul edilir.

Bu sorunu çözmek için geleneksel yaklaşım, sanal makinelerin (VM'ler) kullanılması olmuştur. Bir bilgisayar sistemini taklit etmek için kullanılan sanal makineler.
En Çok Okunan: Docker Projesi Fikirleri ve Konuları
Faydalar
Bu VM'ler, uygulamaları sanal olarak ayırsalar da aynı donanım üzerinde tutarlar. Yazılım bileşenleri arasında ortaya çıkan çakışmaları kontrol etmeyi ve donanım kaynaklarını en aza indirmeyi amaçlar. Bununla birlikte, bir süre içinde, VM'ler, yerel bir işletim sistemi gerektirdiğinden bellek boyutu açısından hantal hale geldi.
Sürekli artan bellek gereksinimlerine gelince, uygulamalar özel donanım, yazılım veya ikisinin bir kombinasyonunu içerebileceğinden, aynısını sürdürmek ve yükseltmek zorlaştı.
Docker Containers'ın avantajlarından bazıları şunlardır:
- Ortam standardizasyonu – üretim ortamı, geliştirmek, test etmek veya sürdürmek için işbirliği içinde paylaşılabilir.
- Daha hızlı ve tutarlı yapılandırma – Görüntü yapılandırması, ayrıcalığı olmayan kullanıcıların hızlı çalışmasını kolaylaştırır.
- DevOps'un daha hızlı benimsenmesi – Temel otomasyon aşamalarında destekler: Dağıtma, Çalıştırma ve Optimize Etme.
- Güvenli olağanüstü durum kurtarma - Minimum kurtarma süresiyle DR'de azaltılmış sürükleme.
Okumalısınız: Hindistan'da Docker Maaşı
Operasyon
Her kapsayıcı, tek bir işletim sistemi çekirdeği tarafından çalıştırılır ve bu nedenle sanal makinelerden daha az kaynak kullanır. Aynı donanım üzerinde yoğun bir şekilde paketlenmiş kaplar, işletim sisteminin temel çekirdeğini birkaç uygulamayla paylaşır ve yine de yürütme ortamlarını birbirinden yalıtır. Konteynerler, sanal makinelerden çok daha az kaynak kullanır ve hızlıdır.
Şimdi işlemi Linux bağlamında görelim. Docker, bir uygulamayı ve bağımlılıklarını sanal bir kapsayıcıda paketler ve yerel tesisler, genel veya özel bulut gibi çeşitli yapılandırmalarda herhangi bir Linux sunucusunda çalışmasını sağlar. Docker, çekirdeğin paylaşılan kaynağını kullanır ve VM genel giderlerinden tasarruf sağlar.

Konteynerler birbirinden izole edilmiştir. Ayrıca belirli yazılım setlerini, kitaplıkları ve yapılandırma dosyalarını bir araya getirirler. İyi tanımlanmış kanalları kullanarak birbirleriyle iletişim kurabilirler. Bu nedenle, bir Docker kapsayıcı, kapsayıcılar ve kapsayıcı tabanlı uygulamalar oluşturmak için açık kaynaklı bir yazılım geliştirme platformu olarak görülür.
Bu, geliştiricilerin bir uygulama geliştirmek ve başlatmak için karmaşık altyapı gereksinimleriyle uğraşmadan uygulamaları oluşturması, çalıştırması ve değiştirmesi için bir platform sağlayan bir bulut bilişim hizmetleri kategorisidir.

Docker 'run' komutu, yerel liman işçisi ana bilgisayarında bir kapsayıcı oluşturmak ve başlatmak için kullanılır. Öte yandan, Docker 'hizmeti', Docker'ın bulut modu altında çalışan aynı konfigürasyona sahip bir veya daha fazla kapsayıcıyı ifade eder. Bir kullanıcının bir konteyneri döndürerek bir aktarım oluşturduğu bir Docker çalışmasına benzer.
İşlev
Kapsayıcılar uygulamaları işletim sisteminden ayırdıkça, kullanıcılar diğer her şeyi birden fazla yalıtılmış kapsayıcıda çalıştırmaya yardımcı olacak temiz ve minimal bir işletim sistemine sahip olur. Kapsayıcılardan soyutlanan işletim sistemi ile bir kapsayıcıyı, kapsayıcı çalışma zamanı ortamını destekleyen herhangi bir sunucu arasında taşımak mümkün hale gelir.
Bileşenler
- Docker motoru: Container'ları barındıran bir yazılımdır. Docker'ın çekirdeği ve kapsayıcıların oluşturulmasından ve çalıştırılmasından sorumlu olan temel istemci-sunucu motorudur.
- Dockerfile: Bir Docker kapsayıcısı bir Dockerfile ile başlar. Bir Docker görüntüsü (örneği) oluşturmak için kullanılan talimatların basitleştirilmiş sözdiziminde yazılmış bir metin dosyasıdır. Her docker konteyneri, belirlenmiş bir Dockerfile ile başlar.
- Docker görüntüsü: Dockerfile yazıldıktan sonra, Dockerfile yönergelerinde belirtildiği gibi statik bir görüntü oluşturmak için Docker build kullanılır. Docker görüntüsü, taşınabilir bir dosyanın bir örneğidir, esasen bir kapsayıcının anlık görüntüsüdür. Yazılım bileşenleri için kapsayıcı tarafından çalıştırılan bir dizi belirtimi içerir. Kapsayıcı görüntüleri, Docker kapsayıcılarında çalışma zamanında kapsayıcı olur ve görüntüler, Docker Motorunda çalıştırıldığında kapsayıcı olur.
- Docker run: Bir kapsayıcıyı başlatmak için 'run' komutu kullanılır. Her kapsayıcı, bir görüntünün belirli bir durumudur. Konteynerler, anında çalıştıkları ve durdurulup yeniden başlatılabilmeleri nedeniyle doğaları gereği anlıktır. Bir görüntünün birden fazla kapsayıcı örneğini aynı anda çalıştırabilirsiniz.
- Docker kayıt defteri: Docker görüntüleri için bir depodur. Bu, kayıtlı müşterilerin görüntüleri paylaşabileceği bir yerdir. Geliştirmede kullanmak için ('çek' olarak adlandırılır) görüntüleri indirebilir veya mevcut görüntüleri yükleyebilirsiniz ('push'). Ayrıca verilen olaylara dayalı bildirimlerin oluşturulmasına da izin verir. Bir kayıt defteri türü, genel veya özel olabilir. Docker Hub ve Docker Cloud, ana genel kayıtların örnekleridir. Docker Hub, Docker'ın görüntüleri aradığı varsayılan kayıt defteridir.
- Docker hub: Kapsayıcıları paylaşmak ve yönetmek için kullanılan bir SaaS deposudur. Kaynakları açık kaynaklı projelerde, yazılım satıcılarında ve kullanıcılar tarafından kamuya açık alanda yayınlanan resmi olmayan görüntülerde bulunan resmi Docker görüntülerini paylaşır.
Çözüm
Konteynerler işletim sistemlerini paylaşırken, VM'ler sanal donanımı taklit edecek şekilde tasarlanmıştır. Docker kapsayıcıları, birden çok uygulamanın tek bir işletim sistemi çekirdeği üzerinde çalıştırılması gereken durumlar için uygundur.
Çeşitli işletim sistemi türlerinde çalıştırılması gereken uygulamalarınız veya sunucularınız varsa VM'lere ihtiyacınız vardır. Günümüz senaryolarının hızlı teknolojik gelişmeleri sırasında, hafif bir kaynak olan Docker, sanal makinelere tercih edilen bir alternatiftir.
Büyük veriler hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saat zorlu eğitim, 9+ proje ve ödev, IIIT- sunan Tam Yığın Yazılım Geliştirmede PG Diplomasına göz atın. B Mezun statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.