Sellest õpetusest õpime, mida see viga tähendab, miks see ilmneb ja kuidas saate seda Dockeri kasutamisel lahendada.
Mis on Dockeris pildiviide?
Dockeris viitab pildiviide meetodile konkreetse Dockeri kujutise tuvastamiseks ja asukoha leidmiseks Dockeri registris (Docker Hub) või kohalikus Dockeri hostis.
Vaikimisi koosneb pildiviide kahest põhikomponendist:
Hoidla – esimene osa määratleb sihtkujutise hoidla. See on Dockeri pildi tipptasemel organisatsiooniüksus, mida kasutatakse peamiselt organisatsiooni või pilti haldava isiku esindamiseks. Näiteks võite leida pildi nimega Microsoft/SQL-server. Sel juhul esindab esimene osa mainet hoidvat organisatsiooni.
Silt – pildi teine osa on silt, mis on seotud hoidlas oleva pildi konkreetse versiooni või variandiga. Pildisildid võivad tähistada sama pildi erinevaid versioone, erinevaid väljalaseid või erinevat ühilduvust. Näiteks pildil nginx:latest, kus uusim silt viitab Nginxi pildi uusimale versioonile.
Kujutise määramisel Dockerfile'i või Dockeri käsus peab pildi nimi järgima järgmisi nimetamisreegleid:
- Hoidla nimi peaks olema väiketähtedega.
- Hoidla võib sisaldada ka tähti, numbreid, sidekriipse (-), allkriipse (_) või edasisuunas kaldkriipse (/), mis näitavad registris organisatsiooni või rühmitamist.
- Pildi nimes ei tohi olla tühimärke (tühikuid ega tabeldusmärke).
Dockeri vigane viitevorming
Kui saate Dockerfile'i või Dockeri käsu käivitamisel veateate 'kehtetu viitevorming', tähendab see, et teie nimi ei ole ülaltoodud reeglitest kinni pidanud.
Näide on selline:
$ dokk tõmba BusyBoxKui käivitame ülaltoodud käsu, tagastab see tõrketeate, nagu näidatud:
kehtetu viide vorming: hoidla nimi peab olema väiketähtedega
Sel juhul ütleb see meile, et pildi nime vorming on vale, kuna pildi nimi peaks alati olema väiketähtedega.
Kuidas parandada Dockeri kehtetu viitevormingu viga
Nagu võite arvata, on esimene meetod kujutise viitevormingu õigsuse tagamine. See hõlmab pildi nime kehtivuse kontrollimist.
Näiteks ülaltoodud käsus saame vea parandada, määrates pildi nime järgmiselt:
$ sudo docker pull busybox: uusim
Sel juhul peaks käsk tõmbama hõivatud pildi uusima versiooni.
2. meetod – jagage pikad Dockeri käsud
Mõnel muul juhul võite pika Dockeri käsu käivitamisel ilmneda viga 'kehtetu viitevormingus'.
Sellisel juhul on hea tava jagada käsk mitmeks reaks. Käskude jagamise meetod sõltub teie kestast ja süsteemist.
- Bash-shelli puhul kasutage aga mitmerealist paomärki või kaldkriipsu (\).
- PowerShelli puhul saate kasutada tagasilöögimärki (`).
- Lõpuks, kui olete käsureal, saate kasutada märki caret kui ^
Näiteks Bashis käivitage käsk järgmiselt:
$ sudo dokki ehitamine \- see \
kinnikast \
sh
PowerShellis saate käivitada käsu nagu näidatud:
$ sudo dokkeri ehitamine `- see `
kinnikast `
sh
Ja lõpuks, kui olete käsureal, kasutage käsku nagu näidatud:
$ sudo dokkeri ehitamine ^- see ^
kinnikast ^
sh
3. meetod – ${pwd} JA $(pwd) tee
Selle vea teine levinud põhjus on muutuja ${pwd} kasutamine. See võib põhjustada konflikti, olenevalt kesta tüübist, millel nimetatud käsku täidate.
PowerShelli puhul peate $(pwd) asemel kasutama muutujat ${pwd}.
Nagu võite arvata, kasutage Bashi puhul sulgude vormingut, mitte kõverate sulgudega sisendit ($(pwd).
Järeldus
Selles postituses käsitleti Dockerfile'i või dockeri käskudega töötamisel kehtetu viitevormingu peamisi põhjuseid. Uurisime ka kolme peamist meetodit, mida saate selle probleemi lahendamiseks kasutada.