Linux kapsayıcıları kılavuzu: Kapsayıcılara giriş

Konteynerler yıllardır moda olan bir kelime... ama bunlar tam olarak nedir?

Kapsayıcılar, sanal makinelere benzer şekilde, bilgisayarınızda sanallaştırılmış uygulamaları çalıştırmanın, ancak farklı bir temel teknoloji kümesini kullanmanın bir yöntemidir. Anlaşılması karmaşık olabilir ancak her şeyi yürütmek için gereklidirler. minecraft sunucuları Google'a aktarın. Ve size bunları nasıl kuracağınızı göstereceğiz.

Taşınabilirlik, modülerlik ve kararlılığa odaklanarak oluşturulmuş bir işletim sistemi olan Linux'u kullanacağız. Linux, sunuculardan mikrodalga fırınlara ve video oyun konsollarına kadar her şeyde bulunur. Konteynerler Linux'ta çalışmakla sınırlı değildir, ancak bunların arkasındaki teknolojiler Linux'a en uygun olanıdır ve Linux'ta en iyi şekilde çalışır. Linux'ta yeniyseniz, aşağıdaki makalemize göz atmanızı öneririz: Yeni başlayanların rehberi dalmadan önce.

Konteynerler sanal makineler midir?

Kapsayıcılar karmaşık bir konu olabilir ancak en iyisi tek bir önemli noktayla başlamaktır: Bir kap

Olumsuz bir sanal makine. Sanal makine, belirli bir donanımın ve yazılımının hipervizör olarak bilinen bir ortamda çalışan simüle edilmiş bir sürümüdür. Daha önce VirtualBox gibi bir yazılım kullandıysanız veya çoklu geçiş, o zaman bir hiper yönetici kullanmışsınızdır.

Hipervizör genellikle kendi işletim sistemi olarak (tip 1 hipervizör olarak bilinir) veya Windows veya Ubuntu (tip 2 hipervizör) gibi başka bir işletim sisteminin sınırları içinde çalışır. Hiper yöneticinin sorumluluğu, konuk işletim sistemini çalıştırmak için ihtiyaç duyduğu simüle edilmiş donanımla sunmaktır. Daha sonra tam işletim sistemi en üstte çalışabilir. Bu, simüle edilmiş bir CPU ve RAM'den veri yollarına, disk sürücülerine veya ağ bağdaştırıcılarına kadar her şeyi içerir. Bu simülasyon hesaplama açısından pahalı olduğundan sanal makinelerin genellikle önemli miktarda ek yükü vardır.

Peki konteyner nedir?

Bir konteyner, bir ana sistem üzerinde yalıtılmış bir ortamda yazılım içermesi ve çalıştırması bakımından sanal makineye benzer. Ancak konteynerler, doğrudan ana bilgisayar işletim sistemine güvenerek geleneksel donanım sanallaştırmasının yerini alır. Konteynerler, ana işletim sisteminin kitaplıklarını ve ikili dosyalarını paylaşır ve yalnızca içerdikleri belirli uygulamayı çalıştırmak için gereken kaynaklara ve bağımlılıklara sahiptir. Bu, tüm konteynerler bir platformda çalıştığından, konteyner başına tam bir işletim sistemine gerek olmadığı anlamına gelir. sistem, sanal işletim sistemiyle elde ettiğiniz ayrımı korurken tek ana bilgisayar işletim sistemini paylaşabilir makineler.

Konteynerler, ana işletim sistemine, çalışan konteynerleri yöneten ve temel işletim sistemine erişimlerini kontrol eden bir konteyner motoru aracılığıyla erişir. Bu, kapsayıcılar arasında güvenliğin uygulanmasını ve işletim sistemi dosyalarına veya ağ bağlantılarına erişim verilmesini veya reddedilmesini içerebilir.

Konteynerleri kullanmanın bazı ödünleri nelerdir?

Sanal makineler ve konteynerler benzer olsa da konteyner kullanmanın dezavantajları vardır. Birincisi, sanal makineden "kaçmak" için kullanılan saldırı yüzeyi önemli ölçüde daha küçük olduğundan ve nüfuz edilmesi daha zor olduğundan, sanal makineler daha güvenli kabul edilir. Örneğin bir kapsayıcı, kötü amaçlı yazılımları test etmek için uygun olmayabilir.

Konteyner kullanmanın en büyük faydası hafif olmalarıdır; işletim sisteminin tamamını sanallaştırma ihtiyacını ortadan kaldırmak, minimum başlatma süreleri ve azaltılmış sistem yükü anlamına gelir. Bu, tek bir ana bilgisayarda çok daha fazla kapsayıcının çalışabileceği anlamına gelir; bu, sanal makinelerde mümkün değildir.

Konteynerler tam bir işletim sistemi gerektirmediğinden kolaylıkla daha küçük görüntüler halinde paketlenebilir ve dağıtılabilir. Tam bir sanal makine görüntüsü kolayca onlarca gigabayt boyutunda olabilirken, konteynerler 15Kb kadar küçük görüntülerde gelebilir. Bu, kapların dağıtılmasını ve kullanılmasını son derece kolaylaştırır. Bunu Docker'da bazı basit örnek konteynerleri çalıştırarak göstereceğiz.

Docker'ı Yükleme

Bu çok fazla teori, o yüzden pratiğe geçelim. Size bir konteynerin nasıl kurulacağını göstermek için Docker'ı Ubuntu 23.10'a yükleyeceğiz ve onu basit bir Merhaba Dünya konteynerini çalıştırmak için kullanacağız. Adımlarımız sanal bir makinede test edilmiştir, ancak Windows PC'nizden çift önyükleme yapabilir veya bir Linux için harika bir dizüstü bilgisayar.

Docker hızla fiili konteynerleştirme aracı haline geldi. Başka araçlar mevcut olsa da Docker geniş çapta benimsenmiştir ve en zorlu uygulamalar dışındaki tüm uygulamalar için mükemmeldir. var Docker'ı kurmanın farklı yollarına ilişkin belgeler, ancak kolay kurulum komut dosyasını kullanacağız. Bu komut get.docker.com adresinden yerel makinenize bir komut dosyası indirecektir:

$ curl -fsSL https://get.docker.com -o get-docker.sh

Daha sonra Docker'ı yüklemek için bu betiği çalıştırabilirsiniz. Sürümü aşağıdakilerle kontrol ederek Docker'ın doğru şekilde kurulduğunu doğrulayabilirsiniz:

$ sudo sh ./get-docker.sh

Ardından aşağıdakilerle bir sürüm kontrolü yapılır:

$ sudo docker version

Ayrıca docker hizmetinin arka planda çalıştığını şu şekilde doğrulayabilirsiniz:

$ sudo systemctl status docker

Aşağıdaki ekran görüntüsünde vurgulandığı gibi yeşil metinde 'etkin (çalışıyor)' ifadesini belirtmelidir. Docker motorunun sürümünün de hatasız olarak yazdırılması gerekir.

Basit bir örnek çalıştırma

Artık Docker kurulduğuna göre, onu bir kapsayıcı görüntüsü indirmek için kullanabilirsiniz. Konteyner görüntüleri, genellikle daha küçük olmaları ve oluşturulmasının daha kolay olması dışında, sanal makinelere yönelik ISO'lara çok benzer. Aşağıdaki komutla basit bir merhaba dünya kapsayıcı görüntüsünü indirin:

$ sudo docker pull hello-world

Bu görüntü indirildikten sonra, aşağıdakileri kullanarak sisteminize indirilen görüntüleri listeleyerek doğrulayabilirsiniz:

$ sudo docker images

Artık merhaba dünyanın indirildiğini görmelisiniz. Çok küçük boyutuna (test makinemizde 13Kb) ve etiketine dikkat edin. Bir görselin etiketi aslında onun versiyonudur. Docker varsayılan olarak görüntünün en son sürümünü indirecektir. Aşağıdakileri kullanarak bu görüntüye dayalı bir kapsayıcı çalıştırın:

$ sudo docker run hello-world: latest

Bu, çok küçük bir C programından çalışan Dockers'ın merhaba dünya konuşmasının çıktısını alacaktır (buna şu adresten göz atabilirsiniz: GitHub).

Tebrikler; ilk konteynerinizi çalıştırdınız! Bu durumda program sonucunu vermiş ve yürütmeyi tamamlamıştır. Konteyner artık ölü ve artık çalışmıyor.

Konteynerleri nasıl canlı tutabiliriz?

Temel bir kapsayıcıyı çalıştırdıktan sonra artık bir görev tamamlandığında hemen çıkmayan daha karmaşık bir örnek oluşturabiliriz. Konteynerler genellikle tek bir işlem etrafında oluşturulur ve bu da daha fazla işlemin ortaya çıkmasına neden olabilir. Bu temel işlem bittiğinde, konteynerin tamamı da onunla birlikte çıkacaktır. Bu bir sınırlama gibi görünebilir, ancak aslında tam Linux çekirdeğindeki sistemlerin başlatılmasına çok benzer.

Kalıcı bir örnek vermek gerekirse, dünyadaki web sitelerinin önemli bir yüzdesini barındırmak için kullanılan bir web sunucusu olan Nginx için bir görüntü alabiliriz. Bu örnek için Nginx'i seçtik çünkü basit, gelişmiş yapılandırma gerektirmiyor ve hafif. En son Nginx görüntüsünü aşağıdaki komutla indirin:

$ sudo docker pull nginx

şunları ekledik: -P Konteynerden ana bilgisayar işletim sistemine bağlantı noktası iletmeyi yapılandırmak için burayı işaretleyin. Bağlantı noktası 80, şifrelenmemiş HTTP (yani web) trafiği için kullanılır. Bu, ana makinenizden konteynere erişmenizi sağlayacaktır:

$ sudo docker run -p 80:80 nginx

Bu komut terminalinizde ekli modda çalışacaktır; bu, konteynerin kelimenin tam anlamıyla terminalinize bağlı olduğu anlamına gelir, böylece konteynerdeki tüm günlükler orada yazdırılacaktır. Konteyner çalışmaya başladıktan sonra açın http://localhost web tarayıcınızda. Aşağıdakine benzer bir Nginx karşılama ekranı göreceksiniz:

Nginx konteyneri artık konteyner motorunuzun içinde çalışıyor. Nginx bağlı modda çalışırken yalnızca açık olduğu sürece çalışmaya devam eder. tuşuna basarak Nginx kapsayıcısından çıkabilirsiniz. Ctrl + C terminalinizde.

Arka planda kaplar nasıl çalıştırılır

Nginx'i arka planda çalıştırmak için başka bir bayrak ekleyeceğiz, -D, müstakil mod için. Bu, konteyneri terminalinizden ayrılmış olarak başlatacak, yani arka planda olacaktır. Örneğin:

$ sudo docker run -d -p 80:80 nginx

Bir sistemde çalışan konteynerleri listeleyebilirsiniz. Nginx kapsayıcınızın artık arka planda nasıl çalıştığına ve bir kimlik atandığına dikkat edin.

$ sudo docker ps

Çalışan bir arka plan kapsayıcısı, kimliği kullanılarak sonlandırılabilir. Ayrıca konteynere bir ad verildiğini de fark edebilirsiniz. Biri belirtilmediğinde Docker her konteynere rastgele, benzersiz bir ad verecektir.

$ sudo docker kill 

Ancak bunu daha ilginç görüntülerle test edebilirsiniz. Orada bol miktarda mevcut Liman işçisi merkezi, genel kapsayıcı görüntüleri için merkezi bir depo işlevi görür.

Konteynerlerle daha derine inmek

Bu, konteynerlere kısa bir giriş niteliğindedir. Konteynerler sınırsız derecede karmaşık olabilir, ancak modern internetimizin çoğunu çalıştıran yüksek oranda dağıtılmış sistemlerin temel yapı taşıdırlar. Ancak bu güç, bunların daha küçük ölçekte kullanılmasını engellemez. Konteynerlerin ve Docker'ın temelleri hakkında bilgi sahibi olmak, kullanışlı yerel hizmetleri çalıştırmanın kapısı olabilir. Minecraft sunucusu veya eski bir bilgisayarda Plex.