Bulut yerelinin temel taşı; tek bir makalede hangi kapsayıcıların, Docker'ın ve Pod'un olduğunu anlayın

Yazar | Aholiab

Editör | Carol

Üretildi | CSDN (ID: CSDNnews)

Mühürlü harita CSDN Visual China'dan indirildi

Cloud Native, ilk olarak 2013 yılında Pivotal tarafından önerilen bir konsepttir. Bulut yerel, şirketlerin konteynerleştirme, mikro hizmetler ve sürdürülebilir teslimat ile esnek bir şekilde genişletilebilen uygulamalar oluşturmasına ve çalıştırmasına yardımcı olur. Bulut tabanlı uygulamalar, basit ve hızlı yapıları, kolay kurulumları ve isteğe bağlı ölçeklenebilirlikleri nedeniyle son yıllarda giderek daha fazla işletme tarafından memnuniyetle karşılandı.

Kapsayıcılar, bulut yerel kavramının önemli bir parçasıdır.Bir bilgi işlem birimi olarak, kapsayıcılar daha hafif ve daha ucuz bir şekilde çalıştırılabilir; Bir uygulama paketleme formu olarak konteyner, uygulamaya bağımsız ve taşınabilir olma yeteneği verir. Docker ve Kubernetes teknolojilerinin olgunlaşmasıyla, konteynerler günümüzde en sıcak geliştirme konsepti haline geldi.

Gartner'ın tahminlerine göre, 2022'de küresel şirketlerin% 75'i üretimde kapsayıcıya alınmış uygulamaları kullanacak (şu anda yaklaşık% 30) ve uygulama yazılımlarının% 50'si hiper birleşik ortamlara uyum sağlamak için kapsayıcıya alınacak (şu anda yaklaşık% 20) . Docker ve Kubernetes, ortamlarda yeni standartlar olacak. Bu nedenle, konteynerlerin ve Docker'ın temel kavramlarını anlamak, bulutta yerel geliştirme oynamanın temelidir.

Geliştiricilerin kapsayıcıların temel kavramlarını ve uygulama senaryolarını anlamasına yardımcı olmak için, 12 Mart'ta, JD Cloud ve AI Cloud Ürün Ar-Ge Departmanının uzman mimarı Liu Junhui, CSDN çevrimiçi açık kurs platformunda "Bulutta Yerli Altı Haftada" bir dizi teknik açık kurs açtı. İlk derste Bay Liu Junhui, konteynırların bileşimi, Docker'ın temel kavramları, konteynerlerin tipik uygulamaları, Pod'un temel kavramları, konteyner güvenliği ve JD Zhilian Cloud yerel konteynerleri vb. Yönlerinden "Konteynerlere ve Kapsüle Giriş" konusunu tema olarak aldı. Geliştirici sistemi, kapla ilgili bilgileri sıraladı.

Aynı zamanda, konteyner ve Pod'un "okul sonrası ödevi" aracılığıyla, toplantıya katılan öğrenciler, izlenimlerini derinleştirmek için dersten sonra bunu kendileri yapmaya teşvik edilir. Kursa katılan öğrenciler çok şey kazandıklarını ifade ettiler. Peki, Bay Liu Junhui ne tür kuru malları paylaştı? Kaplar ve bölmeler tam olarak nedir? İçeriğin özünü birlikte gözden geçirelim!

Konteyner nedir?

Kabın kesin bir tanımını vermek kolay değildir çünkü herkesin kap üzerine farklı bir bakış açısı vardır. Liu Junhui'nin görüşüne göre, konteyner sadece bilgi işlem birimleri sağlamanın bir yolu değil, aynı zamanda uygulamalar için bir paketleme şekli.

1. Kapsayıcı bir bilgi işlem birimidir

Bir bilgi işlem birimi olarak konteynerler, iş parçacıkları, işlemler, sanal makineler ve fiziksel makinelerle aynıdır (aşağıdaki şekilde gösterildiği gibi). Sürekli bir ölçekte, sola ne kadar uzaksa, izolasyon, güvenlik ve genel gider o kadar düşük ve sağ ne kadar yüksekse o kadar yüksek olur. Konteyner, süreç ve sanal makine arasındaki sadece bir bilgi işlem birimidir.

Ancak tüm uygulamalar bir konteyner seçmek için uygun değildir.Geliştiriciler, uygulamalarının özelliklerine ve gereksinimlerine göre en uygun bilgi işlem birimini seçebilirler. Örneğin, uygulamanız yüksek performanslı, güvenilir ve aynı yönetim alanındaysa, iş parçacıkları veya süreçler yeterli olabilir; Ancak uygulamanız çok kiracılıysa ve diğer uygulamalarla aynı alanda çalışıyorsa, verilerin sızdırılmaması veya performansın etkilenmemesi için bu uygulamaları nasıl güvenli bir şekilde izole edeceğinizi düşünmeniz gerekir. Şu anda konteyner iyi bir seçim olabilir.

Konteyner "oldukça izole edilmiş bir süreç" olduğu için, genel sürecin izolasyonu temelinde yeni bir izolasyon mekanizması ekler.Bu izolasyon mekanizmaları Linux çekirdeği tarafından sağlanır ve bazı Ad Uzayları ve CGrupları içerir. Ad alanları üç kategoriye ayrılabilir: ağ, depolama ve bilgi işlem. Bunların arasında en önemlisi ağ ad alanıdır. o Konteyner ağının diğer konteyner ağlarından bağımsız olduğundan emin olun. Her konteyner tarafından görülen dosya sistemi diğer konteynerlerle paylaşılmaz Her konteyner sadece kendi proses kimliğini görebilir ve proses numarası da süreklidir.

Liu Junhui, bir konteyner ile bir sanal makine arasındaki en büyük farka gelince, bir sanal makineye kıyasla, bir konteynerin en büyük özelliğinin, kendi bağımsız işletim sistemine sahip olmaması, ancak ana bilgisayarında bir işletim sistemi paylaşması olduğuna inanıyor; sanal makine çalışırken "Ayrı bir sunucuda." Bu nedenle, konteynerin sanal makineye göre maliyeti düşük olacaktır, ancak izolasyon eksiktir.

2. Kap, uygulanan bir paketleme şeklidir

Uygulama geliştirme tecrübesi olan herkes, bir uygulamanın tek bir yürütülebilir dosya olmadığını bilir. Biraz daha karmaşık bir uygulama, aşağıdakiler dahil olmak üzere birden çok parçadan oluşur: kod, yürütülebilir dosyalar, yapılandırma bağımlılıkları, harici bağımlılıklar (dinamik bağlantı kitaplıkları) vb. .

Bu nedenle, sürüm paketini uygularken, hedef işletim sisteminin sürümü, sistem mimarisi ve bağlı olduğu modüller gibi faktörleri göz önünde bulundurmanız gerekir. . Aksi takdirde, uygulama kurulduğunda sistemin farklı bölümleri değişecektir.

Bir uygulamanın paketlenmesi olarak konteynerin en büyük özelliği uygulamanın bağımsızlığını ve taşınabilirliğini gerçekleştirmesidir.Konteynırın kendisi uygulamanın tüm bağımlılıklarını içerir, bu da sistem sürümü ve mimarisinden bağımsız olarak herhangi bir altyapı üzerinde çalışmayı mümkün kılar. Çeşitli kazalara yol açan sorunlar.

Docker nedir?

Basitçe ifade etmek gerekirse, Docker çok başarılı bir konteyner yönetimi platformu olarak görülebilir. Docker'ın en önemli parçası, operasyon yönetimi ortamıdır (aşağıdaki şekilde gösterildiği gibi).

Yukarıda belirtildiği gibi, bir konteyner bir bilgi işlem birimidir, bu nedenle Docker'ın işletim ortamı bu bilgi işlem birimlerini oluşturmak, yönetmek ve yok etmek için kullanılır. Bu bilgi işlem birimlerini oluştururken ve yönetirken, bilgi işlem biriminin paketini (yani yazılım yayın paketini) kullanmanız gerekir, Bu paketler, konteyner görüntüleri şeklinde kendi işletim ortamında saklanır ve tüm konteyner hesaplama birimleri bu görüntüler aracılığıyla oluşturulur.

Ancak görüntünün kendisi, Docker'ın bir başka önemli parçası olan DockerHub'ı içeren sürüm yayınlama ve yükseltme gibi gereksinimlere sahip olacaktır. DockerHub biraz Apple'ın App Store'una benziyor. Çok büyük bir "konteyner pazarı". Yaygın olarak kullanılan tüm yazılımlar DockerHub'da bulunabilir.

Docker'ın son önemli modülü, komutları vermek veya konteynerin işletim ortamının durumunu görüntülemek için kullanılan kullanıcı arayüzü ve yönetim araçlarıdır. Sadece bir Docker komutu kullanın ve konteynerin çalışma durumunu oluşturmak, silmek ve görüntülemek için bazı parametreler ekleyin.

Şimdi Docker'ın gerçek işleyişine bir göz atalım.Docker kullanımı hakkında konuşmak için örnek olarak bir Hello World konteyneri alacağız. Aslında, bu Hello World kapsayıcısını çalıştırmayı denemek için yalnızca Docker yüklemeniz gerekir.

Aşağıdaki kod aracılığıyla Docker'ın yaptıklarına bir göz atacağız:

Öncelikle Docker'ın Hello World imajının son versiyonunu yerel olarak aradığını gördük, lokal olarak böyle bir imaj olmadığını gördükten sonra imajı indirmek için DockerHub'a gitti. Daha sonra imaj çalıştırılır ve Docker arka planında böyle bir konteyner oluşturulur.

Docker'ın ortaya çıkışı, konteyner uygulama yönetimini çok kolaylaştırır ve konteyner çalıştırma yalnızca tek bir komutla gerçekleştirilebilir. DockerHub'dan görüntüler indirmek, çeşitli izolasyon ortamları oluşturmak, kapsayıcılar ve harici ağ iletişim ortamları oluşturmak, Docker ile yapılabilir. Docker'ın konteynerin tüm yaşam döngüsünü yönetebileceği söylenebilir.

Konteyner - Sanal Makine, Oduncu Baltası ve Testere

Konteynerlerin bir özeti olarak konteynerlerin en büyük özelliklerini hafif ve tamamen bağımsız dağıtım olarak özetleyebiliriz. Bu iki özellik, bulut yerelinin esnek ve sınırsız genişlemesi ve isteğe bağlı kullanımın konumlandırılmasıyla çok tutarlıdır. , Ve bu nedenle, kapsayıcılar bulut yerelinin temel taşı haline geldi.

Hem kapsayıcılar hem de sanal makineler bilgi işlem birimleri olsa da, sanal makinelerden kapsayıcılara geçiş basit bir performans iyileştirmesi veya mimari değişiklik olarak görülemez, ancak uygulama konseptlerinde bir değişiklik olarak görülebilir.

Örneğin, geçmişte oduncular kitap okurken balta kullanıyordu, daha sonra herkes balta kullanmanın çok fazla çaba gerektirdiğini düşünüyordu. Bir uzman başka bir ağaç kesme aleti "testere" kullandı. Ancak bir oduncu bir ağacı kesmek için testereyi alırsa, kullanımı kolay bir balta olmadığını görecektir. Ancak gerçek şu ki, balta ve testere kullanılan iki kavramdır.

Kaplar ve sanal makineler arasındaki farktan bahsetmişken, aşağıdaki çizelgeden daha fazla hissedebiliriz.

Kapsayıcıların tipik uygulamaları, biri mikro hizmetler, diğeri DevOps olmak üzere iki kategoriye ayrılabilir.

Mikro hizmetler, farklı konteynerler çalıştıran sistemin farklı birimlerini veya işlevlerini ifade eder ve her hizmet için konteyner sayısı kendi yüküne göre ayarlanabilir. Örneğin, büyük bir sistem kullanıcı girişi, ürün teşhir ve ürün etkileşimi gibi işlevleri içerir, ancak sistemin tüm bölümleri aynı anda doğrusal olarak artmaz, bazı bölümler meşgul olabilir ve bazı bölümler kapasite fazlası olabilir.

DevOps, geliştiricilerin, testlerin ve üretim süreçlerinin kolaylaştırılmasını ifade eder. Kabın "kendi kendine yeten" özelliği sayesinde, standart bir sirkülasyon maddesi olarak kullanıldığında, geliştirme ortamının, test ortamının ve üretim ortamının uygulama paketini tamamen tutarlı hale getirebilir, bu da bağımlılık yapılandırma hatalarının uygulanmasından kaynaklanan kazayı azaltır vb. Geliştirme, test ve üretimin tüm montaj hattı daha verimli hale gelir.

Kapsül, gelişmiş bir kapsayıcı

Kapsül, birleşik bir çoklu kapsayıcı işlem birimi ve Kubernetes'te temel bir birimdir. Bunu bir konteynerin bir uzantısı ya da geliştirilmiş bir konteyner olarak düşünebilirsiniz. Bölme, birlikte belirli bir işlevi yerine getiren bir ana kap ve birkaç yardımcı kap içerir. Birden çok işlem (kaplar aynı zamanda yalıtılmış bir işlemdir) bir Ad Alanında paketlendiğinde, bir Bölme oluşur. Bölmedeki farklı işlemlerin uygulama paketlemesi hala bağımsızdır (her kapsayıcı kendi görüntüsüne sahip olacaktır).

Pod'un önemi, sadece ana kap ile yardımcı kap arasındaki yakın ilişkiyi korumakla kalmayıp, aynı zamanda ana kabın bağımsızlığını da koruyabilmesidir. Ana konteyner ve yardımcı konteyner aynı yaşam döngüsüne sahip olduğundan ve aynı anda oluşturulup imha edilebildiğinden, onları bir Kapsüle koymak etkileşimlerini daha verimli hale getirebilir.

Öte yandan, ana kabın bazı ana görevleri tamamlaması gerekirken, diğer görevlerin ortak özellikleri olabilir, böylece bunlar ayrı ayrı paketlenebilir ve yardımcı kap tarafından çalıştırılabilir.

Herkese Katacoda adlı bir web sitesine gitmelerini şiddetle tavsiye ederim. Docker ve Docker Image gibi uygulamalı projeler de dahil olmak üzere çok sayıda ücretsiz çevrimiçi deneye sahiptir ve artık tamamen ücretsizdir. Başlamak için buraya gitsen iyi olur.

JD Zhilian bulut yerel konteyneri, güvenlik kraldır

Son olarak, Bay Liu Junhui, JD Zhilian Bulut Yerel Konteyneri ile ilgili bir giriş yaptı. Girişten önce ilk olarak konteyner ürünleri için güvenliğin önemini vurguladı.

Bir konteyner platformu birden fazla kiracı uygulamasını çalıştırdığında, "yanal saldırılara" eğilimlidir, yani süreçler, ayrıcalıklarını yöneticilere yükseltme gibi ayrıcalıkları artırmak için sistem açıklarını kullanır ve böylece sistemde çalışan diğer sistemlere erişim elde eder. İşlem veya kapsayıcının işlem izinleri. Şu anda bu tür güvenlik açıkları genellikle bilgi işlem kaynaklarının "madencilik" için kötü niyetli kullanımına yol açmaktadır.

Bu soruna yanıt olarak, şu anda iki çözüm var, biri "sistem çağrılarını kısıtla", diğeri "bağımsız çekirdek".

Sistem çağrılarını kısıtlamak, uygulama sistem çağrılarını kısıtlayarak uygulama yeteneklerini azaltmak ve böylece diğer uygulamalara zarar vermekten kaçınmak anlamına gelir. Şu anda, Google'dan Givsor ve IBM'den Nabla bu yaklaşımı benimsiyor. Aşağıda gösterildiği gibi, Başlangıçta, bir uygulama tüm sistem çağrılarına erişirdi, ancak Nabla modunda, uygulama yalnızca gerekli sistem çağrılarına erişir ve diğer çağrılar engellenir.

Ancak bu yöntemin dezavantajı, başlangıçta uygulamaya "tam olarak doğru" izinleri açmanızı gerektirmesidir.Kazara yeterli izinleri açmazsanız, uygulama çökebilir.

Bağımsız çekirdek, sanal makinenin çözümünü ifade eder.Kaba yeni bir çekirdek eklemeyi ifade eder.Bu çekirdek hafiftir ve iki uygulama içerir: "mikro çekirdek" ve Unikernel. Unikernel ve uygulama birlikte derlenir ve işlev çağrıları, sistem çağrıları olmadan doğrudan aralarında yapılabilir.

Bu şemanın avantajı, kabın esasen yalnızca kendi çekirdeğiyle ilgilenmesidir, çekirdek ise ana bilgisayarla ilgilenir Çekirdek ve ana bilgisayar arasındaki etkileşim yalnızca bazı genel talimatlar gerektirir ve sisteme zarar vermek için doğrudan çağrıları içermez. talimat. Şu anda, Kata Container ve JD Zhilian bulut yerel kapsayıcıları bu yaklaşımı kullanıyor.

Bu yaklaşımın avantajı, minimum işletim sistemi olarak mikro çekirdeğin bazı gereksiz sistem işletim parçalarını kaldırırken tüm sistem çağrılarını karşılayabilmesidir; sistem başlatma süresi çok kısadır, ikinci seviyeye ulaşır ve maliyet daha fazladır. Sanal makine küçük olmalıdır.

Güvenliğe ek olarak, JD Zhilian Cloud yerel konteynerinin birçok başka avantajı vardır ve bunlar aşağıdaki gibi özetlenebilir:

-Hem sanal makinenin güvenliği hem de konteynerin esnekliği;

-Sanal makineyle aynı düzeyde güvenlik güvencesi sağlamak için bağımsız bir mikro çekirdek benimseyin;

-Doğrudan başlamak için standart Docker görüntüsünü kullanın, ana bilgisayarı kurmaya ve yapılandırmaya gerek yok;

-Sanal makine ile aynı bilgi işlem, ağ ve depolama özelliklerine sahip olmak;

-Destek kapsayıcıları ve Kapsüller, Kubernetes kümelerini destekler.

Bu çalışma sayesinde, bulut yerel ile ilgilenen geliştiriciler ve kişiler, kapsayıcıların temel kavramları hakkında kapsamlı bir anlayışa sahip olurlar. Öğretmenin paylaşım oturumundan sonra, birçok öğrenci öğretmenle sorular aracılığıyla iletişim kurdu. Öğretmen Liu Junhui de Herkesin ortak soruları sabırla cevaplandı.

JD Zhilian Cloud'un bu kurs için bir "okul sonrası ev ödevi" bağlantısı da kurduğunu belirtmek gerekir. Ev ödevi iki bölümden oluşmaktadır:

  • JD Zhilian Cloud'da bulut ana bilgisayarını kullanın, Docker işletim ortamını kurun, Docker'ın kapsayıcıları çalıştıran ve yöneten temel işlemlerini anlayın ve kapsayıcıların ve Pod'un temel yapısını keşfetmek için Linux sistem araçlarını kullanın;

  • Doğrudan yerel kapsayıcılar oluşturmak için JD Zhilian Cloud'u kullanın ve JD Zhilian Bulut konsolu aracılığıyla kapsayıcılar üzerinde temel işlemleri gerçekleştirin. Yerel kapsayıcılar ile Docker kapsayıcıları arasındaki benzerlikleri ve farklılıkları anlayın ve deneyimleyin. Kaplar ve Kapsül anlayışını daha da pekiştirmek için sınıf egzersizlerinden sonra, aynı anda ödevlerini tamamlayan ve teslim eden öğrenciler mükemmel küçük hediyeler alabilirler.

  • Böyle bir operasyondan sonra, kursa katılan birçok arkadaş, bu kursun sadece "Xiaobai'nin konteyner dünyasının kapısına yaklaşmasına yardım etmek" olduğunu ve bir sonraki kurs için beklentilerle dolu olduğunu söyledi!

    Bulut yerel çağ geldi ve bu yeni çağın kurucularından biri olacaksınız!

    Sadece kullan! Basit bir canlı yayın sistemi oluşturmak için birkaç adım | Güç Projesi
    önceki
    Son 10 yılda çaylak programlama dili PK, Seçin
    Sonraki
    Turing Ödülü açıklandı! Bilgisayar grafiklerinin öncüleri Hanrahan ve Catmull ödüller kazandılar, iki Hollywood 3D animasyon gişe rekorları kıran teknoloji gazisini tebrik etti
    Sohbet robotu inişi ve gelişmiş gerçek savaş | Milyonlarca insan AI öğreniyor
    Sezgisel diyalogda bilgi yönetiminin ayrıntılı açıklaması | Bir milyon insan AI öğreniyor
    Transformer'in yeni sinir ağının makine çevirisinde uygulanması | milyonlarca insan yapay zekayı öğreniyor
    GitHub etkin noktalarına hızlı bir genel bakış: inanılmaz tarayıcı Browser-2020 Weekly, Star'ı 3000'in üzerine çıkarıyor
    Bu makaleyi okuduktan sonra, Spring Security | The Force Project hakkında bir fikir edinebilirsiniz.
    Taş çekiç! Python bu yıl zorlanacak mı? Programcı: Ben deliyim
    Sayısız Java GC makalesi okudunuz, bu 5 soruyu bilmiyor olabilirsiniz
    Veri analisti ve algoritma mühendisi, Python'da doğan programcılar nasıl seçim yapar?
    Üç büyük operatör, yeni ve eski kullanıcı paketlerinde farklı haklar sorununu çözecek; Luo Yonghao, Douyin ile işbirliği yapıyor; Git 2.26 yayınlandı | Geek Headlines
    İnsan-Bilgisayar Etkileşimi İnsan Hayatını Nasıl Değiştirir | Milyonlarca İnsan Yapay Zekayı Öğreniyor
    Bir SIM kart nedeniyle Bitcoin Cash'te 30 milyon dolar mı kaybettiniz?
    To Top