Konteyner nedir?


Yanıtlar:


18

Bir konteyner hakkında bilinmesi gereken ilk şey:

Bu, her şeyden önce bir süreçtir.

Bu anlaşıldıktan sonra, konteynerlerin sanal makinelerle nasıl karşılaştırıldığını ve kontrast oluşturduğunu anlamaya başlayabilir. Konteynerler ve VM'ler ana bilgisayarlarından yalıtım paylaşır . İzolasyon yöntemi kritik farktır.

Konteyner süreçleri, kendilerini diğer işlemlerden izole etmek için üzerinde çalıştıkları işletim sistemi ana bilgisayarına yapılan uzantıları kullanır. Diğer uzantılar da disk ve kaynak yalıtımı sağlar. Konteynerler çekirdeklerini ve belleklerini ana bilgisayar işletim sistemi ile paylaşırlar .

Sanal Makineler, VM'leri ana bilgisayarlarından izole etmek için bir hiper yönetici kullanır. Bu, "davetliler" den (VM'ler) kaynak taleplerini donanıma ileten bir yazılım katmanıdır. Disk yalıtımı, disk sanallaştırma ile sağlanır. VM yok VM adanmış bellek uzaya onlar kendi çekirdeklerini yüklemek host ile bir çekirdek paylaşır.

Bu farkın önemli bir etkisi, bir kabın, ana bilgisayarı ile çekirdek uyumlu olması gerektiğidir. Örneğin, bir Linux ana bilgisayarında Windows Nano Sunucu tabanlı bir kapsayıcı veya doğrudan bir Windows ana bilgisayarında bir Ubuntu kabı çalıştırmak mümkün değildir. Sanal Makineler, aksine, ana bilgisayar işletim sistemi ne olursa olsun herhangi bir çekirdeği çalıştırabilir. Windows ana bilgisayarında bir Linux kabı çalıştırırken, Docker kabı bir Linux VM'de çalıştırır.

Operasyonel farklılıklar çeviklik içindedir: konteynerler normal bir süreç kadar hızlı başlar ve durur. Sanal Makineler "daha ağırdır", kendileri için ayrılmış özel kaynaklar gerektirir ve başlatılması ve kapatılması daha uzun sürer.

Konteynerler, bir DevOps işletim modeline büyük bir esneklik sunar:

  • Kaplar, yazılım bileşeni bağımlılıklarını izole eder. Geliştiriciler, bir uygulama modülünün KG / UA / Üretim'deki gibi geliştirme makinelerinde de çalışacağını garanti etmek için kapları kullanabilir.
  • Kaplar iletişim kurmak için yazılım tanımlı ağ kullanır
  • Konteyner tanımları bildiricidir ve kaynak kontrollü olabilir
  • Konteyner yönetim sistemleri (Kubernetes, DC / OS, Swarm) donanım kaynaklarını (hesaplama / RAM / depolama) havuzları yönetebilir ve kapları dinamik olarak ölçeklendirebilir

1
Ayrıca son 3 kurşunu vSphere'de
yapıyorum

8

Kelime konteyneri , modern Linux çekirdeğinde bulunan hafif bir sanallaştırma teknolojisine karşılık gelir, bu teknoloji FreeBSD hapishanelerine çok benzer.

Daha eski, konteyner kullanamayan bir Linux çekirdeği, işlemleri aynı anda çalıştırabilir. Sistemin bazı özellikleri, işlem ortamı ya da işlem belleği gibi, işlemeye özeldir: yalnızca bu özelliklere ve işletim sistemine sahip olan süreç bu verilere erişebilir. (Bazı ps uygulamaları gibi birçok boşluk var, ancak bu aslında doğru!) Örneğin, diğer bazı özellikler dosya sistemi ve ağ arayüzleri gibi işlemler arasında paylaşılıyor.

Kapsayıcıya sahip, modern bir Linux çekirdeği, sistemin daha fazla özniteliğini bir işlem veya bir işlem grubuyla ilişkili özel veriler olarak ele alabilir. Sonuçta ortaya çıkan içerik bir kapsayıcıdır ve dosya sistemini ve işletim sistemi tarafından başlatılan ağ arabirimlerini kullanarak “başlangıç ​​kapsayıcılarında” bir program çalıştırmak yerine, başka kaplarda işlemleri çalıştırmak mümkündür; farklı ağ arayüzleri listesi. Bu nedenle, farklı kaplarda çalışan iki işlem yalnızca çekirdeği paylaşır. Belki bir süreci farklı bir dosya hiyerarşisinde çalıştırabilen chroot komutunu biliyorsunuzdur , kapsayıcılar fikri bir kaç adım daha ileri götürüyor.

Tabii ki, bu sadece çok kaba bir açıklama, ancak umarım konteynerlerin ne olduğu fikrine açıklık getirmeye yardımcı olur. Şimdi, neye yararlar?

Linux konteyner yeteneklerine Popüler bir arayüz ile uygulanır taneleri docker, dosya sistemleri (temsil eserleri üretmek için kullanılabilecek bir komut satırı yardımcı programı liman işçisi görüntüleri bu dosya sistemleri erişilebilir kaplarda) ve çalıştırma işlemleri. Bu yazılım paketi ayrıca birkaç konteynerin özel bir ağda iletişim kurmasını sağlamak için geçici sanal ağ sistemleri de oluşturabilir.

Konteyner tabanlı teknolojiler aşağıdakilere uygundur:

  • Açıklayın ölçeklenebilir karmaşık dağıtımları.
  • Uygulama geliştiricilere, üretim ortamına çok benzer bir ortam sağlayın.
  • Yazılım artefaktları tipik olarak sadece bir uygulama paketini değil, tam bir işletim sistemini tanımladığından, değişmez sunucu modelini uygulayın.

(Sanal Kutu gibi diğer sanallaştırma teknolojilerine aşina göründüğünüze göre, bu teknolojilerin yukarıdaki üç noktaya da uygun bir şekilde hitap edebildiğini söyleyebiliriz. Günümüzde, sanallaştırma teknolojilerinin oldukça küçük bir yelpazesi var ve onların popülerlik sorusunu karşılaştırabiliriz. bilgisayar dillerinin popülaritesi ile ilgili bazı bağlamlar: muhtemelen her bir çözümün teknik özelliklerine ve aynı zamanda sadece “şansı” olarak etiketleyeceğim birçok etkene bağlı.


1
Artık Linux ile sınırlı değil, Windows 16 da aynı yeteneklere sahip
Tensibai


7

Genellikle konteynerler , adını popülerleştiren liman işçisi konteynerleri gibi bir şey anlamına gelir.

Liman işçisi tanımından alıntı yapıyorum:

Kapları kullanarak, bir yazılım çalışmasını sağlamak için gereken her şey izole kaplara paketlenir. VM'lerin aksine, konteynerler tam bir işletim sistemi içermez - yalnızca yazılımın çalışması için gereken kitaplıklara ve ayarlara ihtiyaç duyulur.

Kök adlandırma , amacı bir sistemi ana sisteminden izole etmek olan linux kapları (lxc) olarak gelir ; ilk hedef, ana sistemi ele geçirme işleminin tehlikeye atılmasını önlemektir.

Şimdi daha geniş bir kapsamda kullanılıyorlar. Modern bir 'konteynır' tanımında, çalışma zamanınız için zaten uygulamanızı içeren bir paket yayınlayacaksınız, gerektiğinde orta malların altında ve gerekli tüm kütüphanelerin altında kalacak ve tüm uyumlu sistemlerde çalışacağından emin olacaksınız.

İkinci avantaj, farklı değişkenlerde aynı bağımlılığa sahip birden fazla uygulamanın, ortam değişkenlerini çok fazla düzenlemesine gerek kalmadan doğru olanı yüklemesine gerek kalmadan kullanabilmesidir.

Sanal kutu sanal makinesi gibi bir VM sistemine veya AWS'deki bir EC2 örneğine benzemeyen, konteynerler yalnızca dosya sistemi düzeyinde sanal ve yalnızca bellek yığını üzerinde izole edilmiştir. Hala aynı konağı paylaşıyorlar ve altlarındaki işletim sistemi cpu kene hakemlik edecek.

Sanal makine donanım düzeyinde sanaldır ve siz bir işletim sistemini çalıştırırsınız, bir kap OS düzeyinde sanaldır ve içinde bir işlem gerçekleştirirsiniz.


1
Hm, yani bir VirtualBox görüntüsü (ya da VirtualBox’da ne denirse) gibi bir şey “kapsayıcı” olarak da nitelendirilebilir, ya da anlamıyor muyum?
Pierre.Vriens

Sorunun bir bölümünü unuttuğumu gördüm, cevabı genişletirken aradaki farkı ekledi.
Tensibai

3

Gönderen AWS tanımına :

Kapsayıcılar, bir uygulamayı ve kaynağını yalıtımlı işlemlerde bağımlılıklarını çalıştırmanıza izin veren bir işletim sistemi sanallaştırma yöntemidir. Kapsayıcılar, bir uygulamanın kodunu, yapılandırmalarını ve bağımlılıklarını, çevre tutarlılığı, operasyonel verimlilik, geliştirici verimliliği ve sürüm kontrolü sağlayan kullanımı kolay yapı taşlarına kolayca paketlemenizi sağlar. Kapsayıcılar, dağıtım ortamından bağımsız olarak uygulamaların hızlı, güvenilir ve tutarlı bir şekilde dağıtılmasını sağlamaya yardımcı olabilir. Konteynırlar ayrıca altyapınıza daha iyi verimlilik sağlamak için kaynaklar üzerinde daha ayrıntılı kontrol sağlar.

Konteynırlama, kendi kendine yeterli olması ve belirli bir işi / ortamı yapmak için gereken tüm gerekli gereklilikleri bir araya getirmekte ve böylece kendi kendine yetecek ve malzeme kurmaya ve kurmaya gelince çok fazla acı çeken herhangi bir platformda çalıştırılabilmektedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.