‫Pekâlâ, bu derste resim katmanları hakkında konuşacağız.
‫Docker'ın nasıl çalıştığının temel bir konsepti budur. Gerçek bir dosya sistemi olarak bir dizi
‫dosya sistemi değişikliği sunmak için birleştirme dosyası sistemi denilen bir şey kullanır.
‫Geçmişe dalmak ve komutları incelemek ve bunları bir görüntünün gerçekte nasıl yapıldığını
‫anlamak için nasıl kullanabileceğimizi görmek için gidiyoruz. Bir kapın bir görüntünün üstünde ek bir
‫katman olarak nasıl çalıştığına dair kopya konseptiyle ilgili biraz bilgi edineceğiz.
‫Resim katmanları ile ne kastediyorum?
‫bloğu olmadığı bir anlamaya başlarsınız gelir ve bir büyük yığın halinde gider.
‫Docker'ı kullanırken aslında tam olarak şeffafdır, ancak tarih komutuyla inceleme ve
‫denetleme gibi belirli komutları araştırmaya başladığınızda, bir görüntünün bazı büyük veri
‫Sağ?
‫Docker'ı ne zaman çektiğimizi fark ederseniz, bazı zamanlar zaten sahip
‫olduğunuz bir şey olduğunu gösteren kelimeleri görebilirsiniz, bazı zamanlar bir Bir süre önce Sağ? Nginx resim kimliğinin aynı olduğunu ve
‫kısmını önbelleğe almışsınız ve bunların hepsi resimlerin kullanılarak tasarlandığına inanıyor Değişiklikler hakkında katmanlar üreten Docker resimlerinde Nginx etiketleri ile oynamaktaydık. aynı resim adı için farklı etiketler olduğunu hatırlıyoruz.
‫birlik dosya sistemi kavramı. Bu yüzden en son nginx'te hızlı liman geçmişi yapalım.
‫Docker'da sahip olduğumuz şeylere hızlıca göz atabilirsek. aslında. Ne bakıyorum burada
‫Bu, konteynerde gerçekten olan şeylerin bir listesi değil, çünkü bu bir resimle ilgili.
‫Aslında bu resim katmanlarının bir geçmişidir.
‫Her imge en baştan sıfırdan oluşan boş bir tabaka ile başlar.
‫Ardından, dosya sisteminde, resimde olan her değişiklik takımı başka bir katmandır.
‫Bir katmana sahip olabilirsiniz, onlarca katmanınız olabilir ve bazı katmanlar belki
‫dosya boyutu bakımından hiçbir değişiklik yapmayabilir.
‫Burada aslında bir değişiklik olduğuna dikkat edeceksiniz; bu
‫aslında yalnızca hangi komutla çalışacağımızla ilgili bir meta veri değişikliği. geçtiğimizde biraz örtüşeceğiz.
‫Bunu Docker dosyasına
‫Ancak şimdilik, bunun 123MB'lık büyük bir dosya eklediğini görebilirsiniz.
‫Sonra burada bir değişiklik yaptık ve burada bir değişiklik yaptık ve Dockerfiles yüzünden bunların gerçekten Docker dosyası
‫meta veri bilgileri olduğunu bilirim.
‫Yukarı çıktıkça, bazı veri değişiklikleri var.
‫Bunun başka bir resimde aslında oldukça farklı olduğunu göreceksiniz.
‫Docker geçmişi mysql'e gidersek, tamamen farklı görüntü katmanları setine sahip olur.
‫Bu işi biraz çizeyim ve belki bu yardımcı olacaktır.
‫Bir görüntüyü başlattığımızda yeni bir resim oluştururken
‫bir katmanla başlıyoruz. Her tabaka, sistemin bu
‫katmanın gerçekten başka bir katmanla aynı olup olmadığını belirlemesine yardımcı olan kendi benzersiz SHA'sını alır.
‫Diyelim ki birinizin başında, en altta Ubuntu olabilir.
‫Resminizdeki ilk katman bu.
‫Ardından, daha fazla dosya ekleyen bir Dockerfile oluşturursunuz ve bu
‫da o görüntünün üstündeki başka bir katmandır. Belki de bunun için Apt kullanırız.
‫Ardından Docker dosyanızda, bir çevre değişkeni değişikliği yapın. Bu sizin imajınızdır.
‫TAMAM?
‫Debian'dan başlayarak farklı bir imaja sahip olabilirsiniz: jessie ve o
‫zaman bu
‫ekranda Apt'ı kullanarak bazı şeyler yükleyebilir, örneğin MySQL yükleyebilirsiniz. Bazı dosyaları kopyalayabilirsiniz, bir bağlantı noktası açabilirsiniz.
‫Dolayısıyla Docker
‫dosyasında genelde yaptığınız bu değişikliklerden her biri, ancak bir dakika içinde kontrol edeceğimiz docker komutu ile de yapabilirsiniz.
‫Bu da başka bir görüntü ve bunların hepsi birlikte paketlenmiştir.
‫Aynı jessie sürümünü kullanan başka bir resme sahipsem ne olur?
‫Bu resim, önbelleğimde sahip olduğum katmanın
‫üstünde kendi değişikliklerini yapabilir. Resim katmanlarının önbelleğinin temel konsepti
‫bize zaman ve mekan bütünlüğünü kurtarıyor. Zaten sahip olduğumuz katmanları indirmenize gerek kalmadığından ve her
‫katman için benzersiz bir SHA kullandığını ve bu katmanın ihtiyaç
‫duyduğu tam katman olduğundan emin olduğunu unutmayın. Bunları Docker Hub ve yerel önbellek arasında nasıl eşleştireceğini bilir. Görüntülerimiz üzerinde değişiklik yaparken
‫daha fazla katman oluşturuyorlar.
‫Aynı görüntüyü daha fazla katmanın temel görüntüsü
‫haline getirmek istediğimize karar verirsek, o zaman her katmanın bir kopyasını saklarız.
‫Bu sistemde gerçekten en büyük
‫faydalardan biri, aynı görüntü verisini asla bir kereden fazla dosya sistemimize depolamamamız.
‫Ayrıca, yükleme ve indirme yaparken zaten diğer taraftaki
‫aynı katmanları yüklemek
‫ve indirmek zorunda değiliz demektir. Kendi imajınıza sahip olursanız ve kendi yapmış olduğunuz özel bir şeydi ve daha sonra eklediyseniz,
‫bunun üzerine Docker dosyanızdaki bir
‫başka katman olarak bir Apache sunucusu diyelim ve 80 numaralı bağlantı noktasını açmanız gerekiyordu. haricinde aynıydı. A görüntüsüne, ardından Web sitesi B'ye girerseniz, iki görüntü
‫elde edersiniz.
‫Sonra, en sonunda, aslında kaynak kodunu kopyalamasını istediniz ancak aslında
‫iki farklı web sitesi için iki farklı Docker dosyası bulundurmaya karar verdiniz ve Docker dosyalarındaki her satır, Web Sitesini kopyaladığınız son birkaç Bunu bir dakika içinde göstereceğiz. Bu bir görüntü oluşturur ve bu bir görüntü oluşturur, ancak aslında depolanan yalnızca bu,
‫bu bir, bu katman ve daha sonra bu
‫küçük katman ve daha sonra bu küçük katman.
‫Bu nedenle, gerçekten aynı katmanlar ise, görüntü katmanlarının tüm yığınını birden fazla tutmayacağız.
‫Bu konteynerlerle nasıl çalışır?
‫verdik, tüm Docker, o Apache resminin üstünde bu konteyner için
‫yeni bir okuma / yazma katmanı yaratması gibi.
‫Resminiz varsa, Apache görüntüsümüz var, biz de bir konteyner çalıştırmaya karar Dosya sistemini ve bu şeyleri inceledikçe, tüm kaplar ve resimler
‫normal bir
‫dosya sistemine benziyor ancak Docker tarafından kullanılan depolama sürücüsünün altında, aslında
‫bir krep yığını gibi tüm katmanlar katlanıyor. birbirlerinin üstü.
‫Aynı Apache görüntüsünün yanında iki konteyneri aynı anda
‫çalıştırdıysam, konteyner 1 ve konteyner 2, dosya alanı açısından yalnızca gösteriyordur; bu, yalnızca canlı konteynerde olan bitiş
‫ile ne arasında gerçekleşen farklar olurdu. salt okunur olan temel resimde oluyor. konteynır katmanında saklayın.
‫dosyayı değiştirdim diyelim. olan bu dosyalar.
‫Konteynerler'i çalıştırırken ve resim yoluyla gelen dosyaları değiştiriyorsanız, konteyner 3'ü başlattığımı ve bu yazma sırasında tam ve bu dosyanın bir kopyasını Şimdi konteyner gerçekten sadece sadece çalışan bir süreç ve Apache görüntüsünden farklı
‫aslında içeri girdim ve çalışan konteynerde bu resimdeki bir kopyalama olarak bilinir. Bunun sebebi dosya sistemi bu dosyayı imajın dışına çıkaracak ve onu bu farklılaştırmaya kopyalayacaktır. buraya. Resim listemize geri dönüp bu komutlara tekrar bakarsak,
‫alttaki listeye bakarız ve tarihlerin nasıl farklı olduğunu görebiliriz? Docker Hub'da bu resim değiştikçe ve zaman içinde güncellendi; bu
‫değişiklikler dört hafta içinde en alt katmanda
‫değiştirilmedi ve daha sonra en son değişiklikler son iki hafta içinde
‫gerçekleştiğini görebiliyoruz.
‫Bu arada, kayıp bölüm hakkında endişelenme.
‫Bu aslında Docker arabirimi içindeki bir yanlış isim.
‫Bu bir şeylerin yanlış olduğu anlamına gelmez veya yanlış yapılandırılmıştır. Bunun anlamı şu ki,
‫bu mysql resmi burada bu resim kimliği. Bunlar sadece bu görüntünün içindeki katmanlardır ve
‫Görüntünün diğer katmanları gerçekte resim değildir. bu nedenle kendi resim kimliklerini orada bulamazlar.
‫Şahsen, bunu söylemek, arayüzde biraz yanıltıcıdır, ama bunu yazdıklarını.
‫Öyleyse şimdi bize bir görüntü oluşturulabileceğini göstermek
‫için tarih komutu almış bulunuyoruz, denetleme komutunu kullanalım.
‫Bunun bize yaptığı imge ile ilgili tüm ayrıntıları veren şey budur.
‫Bu temelde meta verilerdir. zamanı hatırlıyor musun?
‫Bir görüntünün iki bölümden, ikili dosyalardan ve bağımlılıklarından ve
‫daha sonra bu resimdeki meta verilerden oluştuğundan bahsettiğimiz İncelemek meta verileri geri verir.
‫Resim kimliği ve etiketleri gibi basit bilgi yanında, bu görüntünün
‫nasıl çalışmasını beklediği konusunda her türlü ayrıntıyı alırsınız.
‫Aslında, bu iki bağlantı noktasını görüntü içinde gösterme seçeneği vardır; bu bağlantıyı başlatmak istediğinizde, hangi bağlantı noktalarını bağlantıları
‫kabul etmek istiyorsanız Docker ana bilgisayarınızda açmanız gerektiğini bilirsiniz.
‫Gerçekten de, çalışan Nginx sürümü ve yol
‫da dahil olmak üzere ortam değişkenlerinin geçirildiğini görebilirsiniz. çalışacak komutu görebilirsiniz.
‫Aslında resmi varsayılan olarak başlattığınızda
‫Yine, bu işlerin birçoğu önceden docker container
‫run komutuyla yaptığımız gibi değiştirilebilir.
‫Fakat bunlar bize varsayılanları ve yazar gibi bazı
‫ilginç bilgileri ve en altta yer alan, AMD64 mimarisi
‫olduğunu gösteriyor ki günümüzde normal PC'lerin ve Mac'lerin tamamı budur.
‫Çevremizdeki çok fazla 32 bitli makinemiz yok, bu yüzden bu sadece standart bir 64 bit Intel mimarisi ve Linux
‫OS üzerinde çalışacak şekilde tasarlandı.
‫Tamam, hızlı bir inceleme.
‫Dolayısıyla, resimler ve bunların nasıl yapıldığı hakkında çok şey
‫öğrendik ve aslında bu karmaşık olmadığını öğrendik. Gerçekten de, bunlar sadece dosya sistemi ve bu değişikliklerle ilgili meta veriler üzerinde yapılan bir dizi değişikliklerdir.
‫Her katmanın bir SHA olarak kendi benzersiz kimliğine sahip olduğunu öğrendiniz.
‫Her bir sistemde sadece
‫bir kez saklanırlar, bu nedenle her Docker arka plan programında her katman dosya sisteminde yalnızca bir kez temsil edilir.
‫Bu, alanlarda
‫çok fazla tasarruf sağladığı gibi, Docker Hub gibi kayıtlar arasında ileri geri görüntü gönderiminde zaman kazandırıyor. üstünde yalnızca tek bir değişiklik katmanı olur.
‫Ve gerçekten, bir kapsayıcıyı başlattığınızda, varolan bir görüntünün
‫Yani aslında genellikle çok küçük. Tarih hakkında öğrendik ve
‫komutları incelemek ve bir resim içinde neler olup bittiğini nasıl öğretebildiklerini öğrendik.
‫