Home
» PC-tips
»
Hoe de fout Docker: ongeldige referentie-indeling te verhelpen
Hoe de fout Docker: ongeldige referentie-indeling te verhelpen
Docker maakt het bouwen, uitvoeren en beheren van containers eenvoudig. U kunt echter een foutmelding 'Ongeldige referentie-indeling' tegenkomen tijdens het uitvoeren of bouwen van een image. In de meeste gevallen wordt dit veroorzaakt door een kleine opmaakfout in de imagenaam of -tag. De fout kan bijvoorbeeld worden veroorzaakt door hoofdletters, speciale tekens of ontbrekende waarden. Deze handleiding legt de meest voorkomende oorzaken van deze fout uit en hoe u deze kunt verhelpen om te voorkomen dat deze opnieuw optreedt.
Herstel de fout 'Ongeldige referentie-indeling'
Laten we eens kijken wat de meest voorkomende oorzaken van de fout 'Ongeldige referentie-indeling' zijn en hoe u deze kunt oplossen:
Hoofdletters in afbeeldingsnamen
Docker vereist dat afbeeldingsnamen in kleine letters worden geschreven. Zelfs één hoofdletter kan opmaakfouten veroorzaken. Het uitvoeren van de volgende opdracht resulteert bijvoorbeeld in een fout:
docker pull NGINX
Archiefnamen moeten in kleine letters zijn
Om deze fout te voorkomen, moet u altijd controleren of de naam van uw afbeelding in kleine letters is geschreven voordat u de opdracht uitvoert.
docker pull nginx
Gebruik kleine letters
Speciaal of ongeldig teken
Soms voegen gebruikers per ongeluk tekens toe die Docker niet toestaat. Dit zijn bijvoorbeeld @-tekens, spaties of tekens die van een website of document zijn gekopieerd en er normaal uitzien, maar dat niet zijn.
De volgende opdracht bevat bijvoorbeeld het speciale teken @, wat de volgende fout zal veroorzaken:
docker run ubuntu@:latest
Fout met speciale tekens
Om deze fout te verhelpen, controleert u of de opdracht geen extra tekens of opmaakproblemen bevat. U kunt een platteteksteditor gebruiken om de opdracht te controleren en indien nodig op te schonen:
docker run ubuntu:latest
Vermijd speciale tekens
Dubbele punt zonder tag
Een van de meest voorkomende fouten is het plaatsen van een dubbele punt aan het einde van de afbeeldingsnaam, maar zonder de tag. Laten we bijvoorbeeld de volgende opdracht proberen om Node op te halen:
docker pull node:
Docker verwacht een waarde na de dubbele punt, zoals latest, 18-alpine of een andere geldige tag. Als er geen waarde wordt opgegeven, wordt de afbeeldingsnaam als onvolledig beschouwd en treedt de foutmelding 'Ongeldige referentie-indeling' op:
Dubbele punt zonder tag
Om deze fout te verhelpen, voegt u een geschikte tag toe na de dubbele punt, zodat de afbeeldingsnaam volledig en geldig is:
docker pull node:latest
Tags toevoegen na dubbele punt
Bestandspad of volumekoppeling bevat spaties
Wanneer u een bestandspad opneemt dat spaties bevat, met name met opties zoals -v (volume mount), kan Docker delen van het pad verkeerd interpreteren als afzonderlijke argumenten of zelfs als onderdeel van de afbeeldingsnaam. Hierdoor kunt u onverwachte resultaten tegenkomen, zoals hieronder weergegeven:
docker run -v /home/user/My Folder:/app ubuntu
Spaties in bestandsnamen
Om dit te voorkomen, moet u het bestandspad altijd tussen spaties en dubbele aanhalingstekens plaatsen, zoals hieronder weergegeven:
docker run -v "/home/user/My Folder:/app" ubuntu
Vervang “/home/gebruiker/Mijn map” door het daadwerkelijke pad naar de map die u in de container wilt koppelen.
Onjuist gebruik van variabelen
Bij het werken met Docker is het gebruikelijk om variabelen in opdrachten te gebruiken, vooral bij het specificeren van imageversies. Als een variabele zoals $VERSION echter niet correct is ingesteld, kan Docker problemen ondervinden zoals de foutmelding 'Ongeldige referentie-indeling'.
Voer bijvoorbeeld de volgende opdracht uit om Ubuntu uit Docker Hub te halen:
docker pull ubuntu:$VERSION
Hier zou $VERSION de versie van de Ubuntu-image moeten weergeven die u wilt ophalen. Maar als u er geen waarde aan toekent, interpreteert Docker de opdracht als "docker pull ubuntu:". Dit resulteert in een ongeldige imagenaam omdat deze eindigt met een dubbele punt en de vereiste versietag mist.
Onjuist gebruik van variabelen
Om dit te voorkomen, moet u ervoor zorgen dat alle variabelen in de opdracht correct zijn gedefinieerd. In Linux kunt u een variabele instellen met de volgende syntaxis.
$VERSION=latest
Haal vervolgens de opgegeven versie op door de volgende opdracht uit te voeren.
docker pull ubuntu:$VERSION
In Windows CMD moet u het trefwoord set gebruiken om een variabele te definiëren (zoals versie). Vervolgens gebruikt u de syntaxis %VARIABLE% om ernaar te verwijzen in opdrachten zoals docker pull.
set VERSION=latest
docker pull ubuntu:%VERSION%
Hier bevat $VERSION de meest recente waarde, zodat Docker de ubuntu:latest- image probleemloos kan ophalen. Je kunt indien nodig ook een specifieke versie toewijzen, zoals 18.04.
Definieer variabelen correct
Probleem met kopiëren en plakken
Soms kopiëren gebruikers opdrachten uit online tutorials of documentatie. Deze gekopieerde opdrachten kunnen verborgen tekens bevatten, zoals onzichtbare spaties, leestekens die niet in het Engels voorkomen of speciale aanhalingstekens. Deze tekens kunnen uw Docker-opdrachten onopgemerkt beschadigen.
Om dit te voorkomen, kunt u het beste de opdracht zelf typen (indien mogelijk) of de opdracht eerst in een platteteksteditor plakken om ongewenste opmaak te verwijderen.
Nu u de meest voorkomende oorzaken van de fout 'Ongeldige referentie-indeling' in Docker kent en weet hoe u deze kunt oplossen, bent u goed op weg om dit probleem in de toekomst te voorkomen. Van het controleren op hoofdlettergebruik tot het controleren of uw variabelen correct zijn ingesteld, deze eenvoudige tips kunnen u veel tijd en frustratie besparen. Als u verder wilt kijken, wilt u misschien ook leren hoe u uw aangepaste Docker-images kunt taggen en naar het register kunt pushen, of hoe u ongebruikte images kunt opschonen om uw systeem schoon te houden.