Docker nedir?

Docker, uygulamaların bulutta veya şirket içinde çalıştırabilirsiniz taşınabilir, kendi kendine yeterli kapsayıcılar olarak dağıtımını otomatikleştiren bir açık kaynak projesidir. Docker ayrıca bu teknolojiyi geliştiren ve geliştiren bir şirkettir ve Microsoft dahil olmak üzere bulut, Linux ve Windows işbirliği içinde çalışır.

Docker kapsayıcılarının çalıştırabilirsiniz yerleri gösteren diyagram.

Şekil 2-2. Docker, hibrit bulutun tüm katmanlarına kapsayıcı dağıtır.

Docker kapsayıcıları, müşteri veri merkezinde şirket içinde, dış hizmet sağlayıcısında veya bulutta Azure'da herhangi bir yerde çalıştırabilirsiniz. Docker görüntü kapsayıcıları Linux ve Windows. Ancak, Windows görüntüleri yalnızca Windows konakları üzerinde, Linux konakları ve Windows konakları üzerinde (şimdiye kadar Hyper-V Linux VM kullanarak) çalışmasına izin verir. Burada konak, sunucu veya VM anlamına gelir.

Geliştiriciler geliştirme ortamlarını Windows, Linux veya macOS üzerinde kullanabilir. Geliştirici, geliştirme bilgisayarına uygulama ve bağımlılıkları dahil olmak üzere Docker görüntülerinin dağıtılacağı bir Docker ana bilgisayarı çalıştırır. Linux veya macOS üzerinde çalışan geliştiriciler, Linux tabanlı bir Docker ana bilgisayarı kullanır ve yalnızca Linux kapsayıcıları için görüntü oluşturabilir. (macOS üzerinde çalışan geliştiriciler kodu düzenleyebilir veya Docker CLI'yi macOS'tan çalıştırabilir, ancak bu yazma zamanından itibaren kapsayıcılar doğrudan macOS üzerinde çalıştırılamamalıdır.) Windows üzerinde çalışan geliştiriciler Linux veya Windows Kapsayıcıları için görüntü oluşturabilir.

Docker, kapsayıcıları geliştirme ortamlarında barındırmak ve ek geliştirici araçları sağlamak için Docker Desktop'ı Windows macOS için ile birlikte sunar. Bu ürünler, kapsayıcıları barındırmak için gerekli VM'yi (Docker ana bilgisayarı) yüklüdür.

Kapsayıcılar Windows çalıştırmakiçin iki tür çalışma zamanı vardır:

  • Windows Sunucu Kapsayıcıları, işlem ve ad alanı yalıtımı teknolojisi aracılığıyla uygulama yalıtımı sağlar. Bir Windows Sunucusu Kapsayıcısı, kapsayıcı ana bilgisayarıyla ve konakta çalışan tüm kapsayıcılarla bir çekirdeği paylaşıyor.

  • Hyper-V Kapsayıcıları, her kapsayıcıyı yüksek oranda iyileştirilmiş bir sanal makinede çalıştırarak Windows Sunucu Kapsayıcıları tarafından sağlanan yalıtımı genişlettir. Bu yapılandırmada, kapsayıcı ana bilgisayarı çekirdeği Hyper-V Kapsayıcıları ile paylaşılmaz ve daha iyi yalıtım sağlar.

Bu kapsayıcıların görüntüleri aynı şekilde oluşturulur ve aynı şekilde işlev gösterir. Aradaki fark, Hyper-V Kapsayıcısı çalıştıran görüntüden kapsayıcının nasıl oluşturularak ek parametre gerektir olduğudur. Ayrıntılar için bkz. Hyper-V Kapsayıcıları.

Docker kapsayıcılarını sanal makinelerle karşılaştırma

Şekil 2-3'te VM'ler ile Docker kapsayıcıları arasındaki karşılaştırmayı gösterir.

Sanal Makineler Docker Kapsayıcıları
Geleneksel vm'nin donanım/yazılım yığınını gösteren diyagram. Docker kapsayıcıları için donanım/yazılım yığınını gösteren diyagram.
Sanal makineler uygulamayı, gerekli kitaplıkları veya ikilileri ve tam konuk işletim sistemini içerir. Tam sanallaştırma, kapsayıcılamadan daha fazla kaynak gerektirir. Kapsayıcılar uygulamayı ve tüm bağımlılıklarını içerir. Ancak, konak işletim sistemi üzerinde kullanıcı alanı içinde yalıtılmış işlemler olarak çalışan işletim sistemi çekirdeğini diğer kapsayıcılarla paylaşırlar. (Her kapsayıcının kapsayıcı başına özel bir sanal makinenin içinde çalıştırıldı olduğu Hyper-V kapsayıcıları dışında.)

Şekil 2-3. Geleneksel sanal makineleri Docker kapsayıcıları ile karşılaştırma

VM'ler için, en alttan ana bilgisayar sunucusunda üç temel katman vardır: altyapı, Konak İşletim Sistemi ve Hipervizör ve her VM'nin kendi işletim sistemi ve tüm gerekli kitaplıkları vardır. Docker için ana bilgisayar sunucusu yalnızca altyapıya ve işletim sistemine ve bunun üzerine kapsayıcıyı yalıtılmış tutan ancak temel işletim sistemi hizmetlerini paylaşan kapsayıcı altyapısına sahip olur.

Kapsayıcılar çok daha az kaynak gerektirmesi (örneğin, tam işletim sistemi gerektirmez) için kolayca dağıtılagelin ve hızlı bir şekilde çalışmaya başlarlar. Bu sayede daha yüksek yoğunlukla aynı donanım biriminde daha fazla hizmet çalıştırarak maliyetleri azaltabilirsiniz.

Aynı çekirdek üzerinde çalıştırmanın yan etkisi olarak, VM'lerden daha az yalıtım elde olur.

Görüntünün temel amacı, ortamı (bağımlılıkları) farklı dağıtımlarda aynı olmasıdır. Bu, makinenize hata ayıklaması ve aynı ortamı garanti altına alan başka bir makineye dağıtma anlamına gelir.

Kapsayıcı görüntüsü, bir uygulamayı veya hizmeti paketlere ek olarak güvenilir ve yeniden tekrarlanabilir bir şekilde dağıtmanın bir yolu olarak kullanılır. Docker'ın yalnızca bir teknoloji değil aynı zamanda bir anlayışı ve süreci de olduğunu söylemek gerekir.

Docker kullanırken geliştiricilerin "Makinemde çalışıyor, neden üretimde değil?" Paketli Docker uygulaması desteklenen herhangi bir Docker ortamında yürütülene ve tüm dağıtım hedeflerine (Geliştirme, QA, hazırlama ve üretim gibi) amaçlanan şekilde çalıştırılaya kadar "Docker üzerinde çalışır" deebilirler.

Basit bir benzetme

Belki de basit bir benzetme Docker'ın temel kavramını kavramanıza yardımcı olabilir.

Zaman içinde 1950'lere bir süre geri gidelim. Sözcük işlemcisi yoktu ve her yerde photocopiers kullanılıyordu (tür).

Imagine olarak her müşterinin adresine fiziksel olarak teslim edilecek gerçek kağıt ve zarfları kullanarak müşterilere posta göndermek için gerekli olan toplu harfleri hızla göndermek sizin sorumluluğundadır (o zamana kadar hiç e-posta yoktu).

Bir noktada harflerin, harfin amacına göre seçilen ve düzenlenmiş büyük bir paragraf kümesi olduğunu fark edersiniz. Bu nedenle, yüksek bir yükseltme elde etmek için bir sistemi hızlıca harf yazacak şekilde hazırlarsınız.

Sistem basittir:

  1. Her biri bir paragraf içeren bir saydam sayfa destesi ile başlar.

  2. Bir harf kümesi yapmak için, ihtiyacınız olan paragrafları olan sayfaları seçersiniz, sonra bunları yığınlar ve düzgün bir şekilde okunmaları için hizalarsanız.

  3. Son olarak, seti photocopier'a yer ve start tuşuna basarak gereken sayıda harf üretebilirsiniz.

Basitleştirmek için Docker'ın temel fikri de bu şekildedir.

Docker'da her katman, bir program yükleme gibi bir komut yürüttkten sonra dosya sisteminde meydana gelen değişiklikler kümesidir.

Bu nedenle, katman kopyalandıktan sonra dosya sistemine "bakarak" program yüklenirken katman dahil olan tüm dosyaları görüyorsunuz.

Bir görüntüyü, işletim sisteminin zaten yüklü olduğu bir "bilgisayara" yüklenmeye hazır yardımcı salt okunur sabit disk olarak düşünebilirsiniz.

Benzer şekilde, bir kapsayıcıyı görüntü sabit diskin yüklü olduğu "bilgisayar" olarak düşünebilirsiniz. Kapsayıcı aynı bir bilgisayar gibi açık veya kapalı olabilir.