Docker Geçersiz Referans Formatı

Docker Gecersiz Referans Formati



Docker görselleri veya Dockerfile ile çalışırken “geçersiz referans formatı” hatasıyla karşılaşabilirsiniz.

Bu eğitimde bu hatanın ne anlama geldiğini, neden oluştuğunu ve Docker kullanımınızda bu hatayı nasıl çözebileceğinizi öğreneceğiz.

Docker'da Görüntü Referansı nedir?

Docker'da görüntü referansı, Docker kayıt defterinde (Docker Hub) veya yerel Docker ana bilgisayarında belirli bir Docker görüntüsünü tanımlama ve bulma yöntemini ifade eder.







Varsayılan olarak görüntü referansı iki ana bileşenden oluşur:



Depo – İlk bölüm, hedef görüntünün deposunu tanımlar. Bu, Docker görüntüsü için en üst düzey kuruluş birimidir ve esas olarak görüntüyü yöneten kuruluşu veya kişiyi temsil etmek için kullanılır. Örneğin, Microsoft/SQL-server adlı bir görüntü bulabilirsiniz. Bu durumda ilk kısım imajı koruyan organizasyonu temsil etmektedir.



Etiket – Bir görüntünün ikinci kısmı, depodaki görüntünün belirli sürümü veya varyantıyla ilişkili bir etikettir. Resim etiketleri aynı görselin farklı sürümlerini, farklı sürümlerini veya farklı uyumluluğu temsil edebilir. Örneğin, nginx:latest görüntüsünde, en son etiket, Nginx görüntüsünün en son sürümünü belirtir.





Görüntüyü bir Dockerfile veya docker komutunda belirtirken görüntü adının aşağıdaki adlandırma kurallarına uyması gerekir:

  • Depo adı küçük harf olmalıdır.
  • Depo ayrıca bir kayıt defteri içindeki organizasyonu veya gruplamayı belirtmek için harfler, sayılar, kısa çizgiler (-), alt çizgiler (_) veya eğik çizgiler (/) içerebilir.
  • Resim adında hiçbir boşluk karakteri (boşluk veya sekme) bulunmamalıdır.

Docker Geçersiz Referans Formatı

Dockerfile veya Docker komutunu çalıştırdığınızda “geçersiz referans formatı” hatası almanız, adınızın yukarıdaki kurallara uymadığı anlamına gelir.



Bir örnek gösterildiği gibidir:

$ liman işçisi BusyBox'ı çekiyor

Yukarıdaki komutu çalıştırırsak, gösterildiği gibi bir hata döndürecektir:

geçersiz referans format: depo adı küçük harf olmalıdır

Bu durumda resim adının her zaman küçük harf olması gerektiğinden bize resim adı formatının hatalı olduğunu söyler.

Docker Geçersiz Referans Formatı Hatası Nasıl Düzeltilir

Tahmin edebileceğiniz gibi ilk yöntem görsel referans formatının doğru olduğundan emin olmaktır. Buna resim adının geçerli olduğunun doğrulanması da dahildir.

Örneğin yukarıdaki komutta görsel adını şu şekilde belirterek hatayı düzeltebiliriz:

$ sudo liman işçisi meşgul kutusunu çekme:en son

Bu durumda komut, Busybox görüntüsünün en son sürümünü çekmelidir.

Yöntem 2 – Uzun Docker Komutlarını Böl

Bazı durumlarda ise uzun Docker komutunu çalıştırırken “geçersiz referans formatı” hatasıyla karşılaşabilirsiniz.

Böyle bir durumda komutu birden fazla satıra bölmek iyi bir uygulamadır. Komut bölme yöntemi kabuğunuza ve sisteminize bağlı olacaktır.

  • Ancak Bash kabuğu için çok satırlı kaçış karakterini veya ters eğik çizgiyi (\) kullanın.
  • PowerShell için geri tıklama karakterini (`) kullanabilirsiniz.
  • Son olarak, Komut İstemi'ndeyseniz, düzeltme karakterini ^ olarak kullanabilirsiniz.

Örneğin, Bash'te komutu şu şekilde çalıştırın:

$ sudo liman işçisi yapısı \

-BT \

meşgul kutusu \

ş

PowerShell'de komutu gösterildiği gibi çalıştırabilirsiniz:

$ sudo Liman işçisi yapısı '

-BT '

meşgul kutusu '

ş

Ve son olarak, Komut İstemindeyseniz komutu gösterildiği gibi kullanın:

$ sudo Liman işçisi yapısı ^

-BT ^

meşgul kutusu ^

ş

Yöntem 3 – ${pwd} VE $(pwd) yolu

Bu hatanın bir diğer yaygın nedeni de ${pwd} değişkeninin kullanılmasıdır. Bu, söz konusu komutu yürüttüğünüz kabuğun türüne bağlı olarak çakışmaya neden olabilir.

PowerShell durumunda $(pwd) yerine ${pwd} değişkenini kullanmanız gerekir.

Tahmin edebileceğiniz gibi, Bash durumunda $(pwd) şeklinde küme parantezli giriş yerine parantez formatını kullanın.

Çözüm

Bu gönderide Dockerfile veya docker komutlarıyla çalışırken oluşan 'geçersiz referans formatının' başlıca nedenleri tartışıldı. Ayrıca bu sorunu çözmek için kullanabileceğiniz üç ana yöntemi de araştırdık.