Docker Invalide Reference Format

Docker Invalide Reference Format



Når du arbejder med Docker-billeder eller Dockerfile, kan du støde på fejlen 'ugyldigt referenceformat'.

I denne tutorial lærer vi, hvad denne fejl betyder, hvorfor den opstår, og hvordan du kan løse den i din Docker-brug.

Hvad er en billedreference i Docker?

I Docker refererer en billedreference til en metode til at identificere og lokalisere et specifikt Docker-billede i Docker-registret (Docker Hub) eller den lokale Docker-vært.







Som standard består billedreferencen af ​​to hovedkomponenter:



Repository – Den første del definerer depotet for målbilledet. Dette er den øverste organisationsenhed for Docker-billedet, hovedsagelig brugt til at repræsentere organisationen eller individet, der administrerer billedet. For eksempel kan du finde et billede ved navn Microsoft/SQL-server. I dette tilfælde repræsenterer den første del den organisation, der vedligeholder billedet.



Tag – Den anden del af et billede er en etiket forbundet med den specifikke version eller variant af billedet i lageret. Billedtags kan repræsentere forskellige versioner af det samme billede, forskellige udgivelser eller forskellig kompatibilitet. For eksempel i billedet af nginx:latest, hvor det seneste tag refererer til den seneste version af Nginx-billedet.





Når du angiver billedet i enten en Dockerfile- eller docker-kommando, skal billednavnet følge følgende navngivningsregler:

  • Lagernavnet skal være med små bogstaver.
  • Lagret kan også indeholde bogstaver, tal, bindestreger (-), understregninger (_) eller skråstreger (/) for at angive organisation eller gruppering i et register.
  • Der må ikke være mellemrum (mellemrum eller tabulatorer) i billednavnet.

Docker Ugyldigt referenceformat

Når du får fejlen 'ugyldigt referenceformat', når du kører kommandoen Dockerfile eller Docker, betyder det, at dit navn ikke har overholdt ovenstående regler.



Et eksempel er som vist:

$ docker pull BusyBox

Hvis vi kører ovenstående kommando, vil den returnere en fejl som vist:

ugyldig reference format: lagernavnet skal være med små bogstaver

I dette tilfælde fortæller den os, at billednavnsformatet er forkert, da billednavnet altid skal være med små bogstaver.

Sådan rettes fejlen i Docker Invalid Reference Format

Som du kan gætte, er den første metode at sikre, at billedreferenceformatet er korrekt. Dette omfatter kontrol af, at billednavnet er gyldigt.

For eksempel, i ovenstående kommando kan vi rette fejlen ved at angive billednavnet som:

$ sudo docker pull busybox:seneste

I dette tilfælde skal kommandoen trække den seneste version af Busybox-billedet.

Metode 2 – Opdel lange docker-kommandoer

I nogle andre tilfælde kan du støde på fejlen 'ugyldigt referenceformat', når du kører en lang Docker-kommando.

I et sådant tilfælde er det god praksis at opdele kommandoen i flere linjer. Metoden til kommandoopdeling afhænger af din skal og dit system.

  • Til Bash-shell skal du dog bruge escape-tegnet med flere linjer eller omvendt skråstreg (\).
  • For PowerShell kan du bruge backtick-tegnet (`).
  • Til sidst, hvis du er på kommandoprompt, kan du bruge et indtegn som ^

For eksempel, på Bash, kør kommandoen som:

$ sudo docker build \

-det \

busybox \

sh

På PowerShell kan du køre kommandoen som vist:

$ sudo docker bygning `

-det `

busybox `

sh

Og til sidst, hvis du er på kommandoprompten, skal du bruge kommandoen som vist:

$ sudo docker build ^

-det ^

busybox ^

sh

Metode 3 – ${pwd} OG $(pwd) sti

En anden almindelig årsag til denne fejl er, når du bruger variablen ${pwd}. Dette kan forårsage konflikt, afhængigt af hvilken type skal, som du udfører den nævnte kommando på.

I tilfælde af PowerShell skal du bruge variablen ${pwd} i stedet for $(pwd).

Som du kan gætte, skal du i Bashs tilfælde bruge parentesformatet i stedet for det krøllede input som $(pwd).

Konklusion

Dette indlæg diskuterede de førende årsager til det 'ugyldige referenceformat', når du arbejder med Dockerfile eller docker-kommandoer. Vi undersøgte også tre hovedmetoder, du kan bruge til at løse dette problem.