‫Bu dersin gereklilikleri arasında, bir konteynerin ve bir görüntünün Docker'da ne
‫olduğunu ve katmanları ya da en azından
‫katmanların temellerini anladığı temelleri bilmek yer alır. Docker Hub'la ilgili birkaç şey bil.
‫Bu ders, görüntü etiketleri ve bunların Docker Hub'a nasıl yükleneceği konusunda yapılacaktır.
‫Aslında etikete bir sürü şey var çünkü onları ilk kullanmaya
‫başladığınızda düşündüğünüz kadar sezgisel değiller. Bir kayıt defteriyle, özellikle de Docker Hub ile
‫çalışmak için gerçekte belirli bir biçimde olmalıdırlar. Ardından, resimlerinize atanan etiketler arasındaki
‫ilişkiden ve bu görüntülerin kimliklerinden bahsedeceğim.
‫Öyleyse başlayalım.
‫Önce etiketleme hakkında konuşalım. liman görüntü etiketi - yardım. Görüntülerin teknik olarak bir ismi yok, rağbetle
‫konuştuğumuzda onlara böyle benzemekle birlikte.
‫Limana liman
‫imajı yaparsak, isim sütununun olmadığını fark ettiniz.
‫Hiçbirimiz doğru olanları hatırlayamayacak görüntü kimliği yanında mı?
‫Onlara üç farklı bilgi parçasıyla bakmamız gerekir.
‫Image ls komutu için bu ekranda aslında yalnızca ikisini görüyoruz. zaman etiketi görüyoruz.
‫Sol tarafta,
‫depoyu görüyoruz, o Depo aslında ya kullanıcı adı
‫ya da organizasyon depoyu taşır.
‫Burada yalnızca resmi depo görüntüleriyle ilgileniyoruz, bu
‫nedenle yalnızca gerçek depo adını göreceğiz.
‫Daha önce de belirttiğimiz gibi resmi olarak kabul edilen özel imajlar,
‫kuruluş taslağı deposunun asıl adı değil, yalnızca depo adını çağırma hakkına
‫sahip olanlardı.
‫Ancak, Docker Hub'a geçersek ve yalnızca mysql üzerinde bir arama yaparsak, aslında yalnızca bir
‫mysql olarak anılacak olan resmi mysql değil, aynı zamanda bir SQL
‫yapısı olan bir organizasyonun olduğunu keşfedeceğiz. Bir mysql-sunucusu, oldukça popüler olduğu görülüyor,
‫bir milyonun üzerinde dosya indirme var. Neyin varmış gibi görünüyor aslında bu aynı
‫MySQL sunucusudur ancak aslında MySQL ekibi tarafından Oracle'da oluşturulmuştur.
‫Aslında onu indirmek istediysem, sağ tarafta
‫olduğunu göreceksin, bir rıhtımçıyı mysql / mysql-server'a çekmeliyim. Aslında kopyalama düğmesini
‫tıklatabilir ve içeri kopyalayabilirim. yaparsam, depo adının organizasyon adını içerdiğini fark edeceksiniz.
‫Aslında bu benzersiz organizasyonel görüntüyü indirecek ve yine liman görüntüsü
‫Docker Hub'daki hesabımda bretfisher olarak bilinirim. Sağ üstten görebilirsiniz.
‫Dolayısıyla, kontrol panelime bakıp sahip olduğum imajlara bakarsam,
‫örneğin, nodemongoapp'a göz atalım.
‫Bunu indirirseydin, docker
‫pull bretfisher / nodemongoapp yapmam gerekecekti.
‫Şimdi deponun adının ne için kullanıldığını anlıyoruz?
‫Etiket oldukça bir sürüm değildir ve oldukça bir şube değil, ancak Git etiketlerine çok benzer.
‫Bu yüzden biraz biraz her ikisi de.
‫Belli bir görüntü taahhüdüne gerçek bir işaretçidir ve bu depoya gerçekten her şey olabilir.
‫Docker Hub'a bir dakika geri dönüp, mysql resmi imajına geçersek, ön sayfanın bu farklı
‫etiketleri olduğunu göreceksiniz. Burada söylemeye çalıştığınız şey 8. 0. 0
‫ve 8. 0 ve 8'in tümü aynı resim kimliği için etiketlerdir.
‫Buraya gelip etiketler düğmesine bakarsam, mysql'e verdikleri çeşitli tüm etiketlerin
‫detaylı listesini edinebilirim.
‫Bu yüzden çok çalıştık Nginx'a gidelim.
‫Burada sadece sayı değil, aslında isimler de olduğunu göreceğiz.
‫Bunların aslında aynı görüntü ve Docker'ın bunu bilmek için
‫yeterince akıllı olduğuna dikkat çekmek önemlidir. Komut satırıma gidiyorum ve zaten nginx'i en son indirdiğimi görüyorum.
‫Web sayfasına bakarsam, şu an son etiketi görüyorum, buna mainline da deniyor.
‫Peki ya rıhtıma asılarak nginx: ana hattı yapsaydım? Bunun bize söylediği, aslında resim kimliği temelinde bu
‫görüntünün zaten önbellekte olduğunu biliyordu. Şimdi tekrar rıhtım röle görüntüsü
‫yaparsam, iki farklı nginx göreceğim. Ön bellekte iki kez saklanmadıklarından, aynı resim kimliğine sahip olduklarını fark
‫edeceksiniz ve yine tasarruf çok geriye gidiyor. kimliğe işaret etmesini sağlayabiliriz.
‫Bu etiketler yalnızca gerçek bir resim kimliğine işaret eden etiketlerdir ve bunların birçoğunun
‫aynı
‫Yeni etiketleri nasıl yaparım?
‫Kendi Docker dosyamı oluşturabilir ve kendi özel görüntülerimi oluşturabilirim, ancak var
‫olan Docker resimlerini yeniden etiketleyebilir, böylece yalnızca bir liman görüntüsü
‫etiketi nginx bretfisher / nginx yapabilirim. Bu komutun biçimi, önce yeni bir etiket vermek
‫üzere gidip sonra da vermek istediğim yeni etiketi görüntü.
‫hafızanızı yenilemek için SOURCE_IMAGE ve isteğe bağlı bir etiket, ardından da NEW_IMAGE isteğe bağlı bir etiket gösterir.
‫Bir liman
‫köprüsü görüntü etiketi yapsaydım - tekrar yardımcı olur, yalnızca
‫Dolayısıyla, etiketi belirtmezseniz, etiketi her zaman en sonuncusu olacak şekilde varsayılan olur. En son, aslında her zaman en yeni anlamına gelmez
‫çünkü teknik olarak eski bazı yazılımları alıp en son etiketleyebilirim.
‫Bu konuda özel bir şey yok, ancak bu varsayılan değer. Gerçekten, keşke varsayılan
‫olarak çağırsalar en son değil.
‫resimleri kullanırken, en
‫sonuncunun genellikle kullanmak istediğiniz yazılımın en son kararlı sürümü olduğuna güvenebilirsiniz.
‫Bu yüzden biraz kafa karıştırıcıdır, ancak genellikle Docker Hub'da, özellikle resmi
‫Hadi liman köprüsü
‫imajını tekrar yapalım. Neler olduğuna dikkat et.
‫Mevcut bir görüntüye yapmadığım yeni bir etiket ekledim.
‫Aynı resim kimliğini gösteriyor
‫ve şimdi kullanıcı adımı ve henüz Docker Hub'da bulunmayan yeni bir repo etiketli.
‫Gidip ön panelime bakarsak,
‫bretfisher / nginx diye bir şeyim yok.
‫Peki ne yapmalıyım, örneğin bir Git push, bretfisher / nginx gibi bir liman görüntüsü basışı yapsaydım?
‫reddedildi: kaynağa talep edilen erişim reddedildi.
‫Bu yüzden açıkça yarattığım şeyi yüklemeyi açıkça denedi, bu etiketi yüklemeyi denedi, ancak bana
‫erişimi reddedildi.
‫Çünkü aslında giriş yapmadım.
‫Docker yardımlarına bakarsanız --help bir giriş ve çıkış komutunu görürsünüz. Henüz bunları kullanmadık. Bu aslında yaptı, bu bir dosyaya yazdı, varsayılan olarak benim profilimde kedi altında yazdı. liman işçisi / config. json ve aslında yerel docker CLI'mın
‫Dolayısıyla, kendi Docker Hub hesabınıza sahip olduğunuzda, komut satırı docker girişinden giriş yapabilirsiniz. benim gibi Docker Hub'a erişmesine izin verecek bir kimlik
‫doğrulama anahtarı depoladı.
‫Bu, daha sonra üretimde öğreneceğimiz önemli bir nokta, Docker CLI ile her nereye giriş yaptığınızı varsayılan olarak,
‫bu kimlik
‫doğrulama anahtarını hesabınız için o kullanıcının profilinde saklamanızdır.
‫Bu yüzden sadece bunun farkında olun.
‫Güvenmeyen bir makine kullanıyorsanız, işiniz bittiğinde liman işçilerinin çıkışını yapın.
‫Dolayısıyla, giriş yaptığımıza göre, tekrar o resmi basmaya çalışmak için yukarı okuna basacağım.
‫TAMAM.
‫Öyle gibi bitti gibi görünüyor.
‫Docker Hub'a gidelim ve yenilendi vuralım. İşte
‫bretfisher / nginx. Yine, bunu yüklemek için
‫gerçekten sıfırdan oluşturmak zorunda değildi.
‫Mevcut bir resme yeni bir etiket verdim ve yüklediğimde otomatik olarak o etikete dayalı yeni bir repo
‫yarattı.
‫Elbette burada tüm bilgileri doldurabilirim ve belirtmediğim için en son etiket
‫adına varsayılan değer olarak geldiğini göreceksiniz. Bu yüzden aslında geri dönüp yukarı
‫okumayı, etiketime ulaşıncaya kadar yapabilirim ve aslında farklı bir etiket verebilirim.
‫Aynı görüntüye ek bir etiket ekleyeceğiz ve test diyeceğim. Donanma görüntüsünü ls yaparsak,
‫şimdi hepsinin aynı resim kimliğiyle üçüne
‫sahip olduğumu göreceksiniz.
‫Limana liman
‫görüntüsü yapsaydım, bretfisher / nginx: test ediyorum ve bu sefer test yaptım, katmanların zaten nasıl olduğunu söyleyin.
‫Bu harika tasarruf oranımızın bir parçası.
‫Resim indirirken ve yüklediğimizde, zaten var olan katmanlar
‫var, bunları yeniden yüklemek zahmetine girmeyecek.
‫Geri dönüp yenilemeyi vurursak, şimdi başka bir etiket bulunduğunu göreceksin.
‫Ancak elbette bir
‫rıhtım röle görüntüsü yapsaydık, aynı görüntü kimliği olduğunu ve bu bağlantıyı her iki tarafın da bildiği gibi görürüz. Docker Hub'un desteklenen bir özelliği olduğundan bu özel
‫bir depo olmasını istediysem, muhtemelen yapmak isteyebileceğim öncelikle depoyu oluşturmak ve
‫onu oluştururken özel olarak belirledim.
‫Ardından ona ittiğimde, kod hiçbir zaman kamuya açık olmayacaktı.
‫Vay canına, resimler için çok şey var ve etiketleri.
‫Bu yüzden hızlı bir inceleme yapalım.
‫Gördüğünüz gibi, resimlere bir şey eklemek istediğinizden çok, ancak Docker Hub
‫ile çalışmak için belirli bir biçimde olması gerekiyor. Yalnızca bir nginx adında bir
‫şey çağırabilir ve yükleme yapamazsınız, çünkü önünde hesap kimliğiniz veya kuruluş kimliğiniz yoksa çalışmaz.
‫Ardından, aynı resim kimliğine nasıl sahip olabildiğiniz hakkında konuştum
‫ve var olan bir görüntüyü farklı etiketler veya etiketlerle etiketlendirdiğinizde, o resim kimliğini değiştirmedi.
‫En son etiketin gerçekten yalnızca varsayılan etiket olduğunu unutmayın.
‫oradaki standart bir standarttır; insanlar, en son etiketlerini, görüntülerinin en
‫istikrarlı sürümünü göstermek için bir yol olarak kullanıyorlar.
‫Bununla ilgili özel bir şey yok, ancak Docker Hub'da bir şeyler varsayıyoruz, CLI'den Docker Hub'a nasıl hızlı bir şekilde giriş yapılacağını ve size nasıl göstereceğini gösterdim. Bir Linux makinesindeyseniz ve paylaşılan bir Linux makinesinde
‫veya bir sunucu gibi bir sunucudaysanız bunu kaldırmak
‫için çıkış yaptığınızdan
‫emin olun, yerel yapılandırmanıza bir oturum kimliğini saklar. Ardından, özel bir Docker Hub görüntüsü oluşturmak istiyorsanız, muhtemelen
‫bir hatırlatma belgesini
‫yüklemenizden önce muhtemelen depoyu oluşturmalısınız.
‫