Docker: Ongeldige referentienummer

Ik volg deze tutorial:
HTTPS: // Medium .com / richting-data-science / nummer-plaat-detectie-met-supervisy-and-tensorflow-part-1-E84C74D4382C

en ze gebruiken Docker. Toen ik probeerde docker (in het run.sh-script) te draaien):

docker run \
    -p 8888:8888 
    -v `pwd`/../src:/src \
    -v `pwd`/../data:/data -w /src supervisely_anpr \
    --rm \
    -it \
    bash

Ik heb de foutmelding:

docker: invalid reference format.

Ik heb 2 uur doorgebracht en ik kan niet echt begrijpen wat er mis is. Elk idee echt op prijs gesteld.


Antwoord 1, Autoriteit 100%

In PowerShell moet u ${pwd}gebruiken in plaats van $(pwd)


Antwoord 2, Autoriteit 37%

Het eerste argument na de “Run” dat geen vlag of parameter is op een vlag is geparseerd als een beeldnaam. Wanneer die parseren mislukt, vertelt het u het referentieformaat, aka beeldnaam (maar kan een beeld-ID, vastgemaakt beeld of andere syntaxis zijn) is ongeldig. In uw opdracht:

docker run -p 8888:8888 -v `pwd`/../src:/src -v `pwd`/../data:/data -w /src supervisely_anpr --rm -it bash

De beeldnaam “Supervisy_anpr” is geldig, dus u moet eerder in het bevel kijken. In dit geval is de fout waarschijnlijk van pwdeen pad uitvoeren met een ruimte erin. Alles nadat de ruimte niet langer een parameter is op -ven Docker probeert het te parseren als de beeldnaam. De fix is ​​om de volumeparameters te citeren wanneer u niet kunt garanderen, is het vrij van spaties of andere speciale tekens.

Wanneer u dat doet, zult u de volgende fout tegenkomen, “uitvoerbaar niet gevonden”. Alles nadat de beeldnaam is geparseerd als de opdracht om in de container te lopen. In uw geval zal het proberen de opdracht --rm -it bashte draaien, die bijna zeker zal mislukken sinds --rmzal niet bestaan ​​als een binair apparaat in uw afbeelding. U moet de parameters opnieuw ordenen om dat op te lossen:

docker run --rm -it -p 8888:8888 -v "`pwd`/../src:/src" -v "`pwd`/../data:/data" -w /src supervisely_anpr  bash

Ik heb wat meer details over deze twee fouten en oorzaken in mijn dia’s hier: HTTPS://SUDO-BMITHITE.GITHUB.IO/Presentations/DC2018/FAQ-StackoverBlow-Lightning.html#29


Antwoord 3, Autoriteit 20%

Ik had hetzelfde probleem wanneer ik copy-pastedde opdracht. In plaats daarvan, toen ik het hele opdracht typte, werkte het!

Veel geluk …


Antwoord 4, Autoriteit 6%

Ik had een soortgelijk probleem.
Probleem Ik had het hadden $(pwd)heeft een ruimte in daar die docker gooide.

Wijzig de mapnaam om daar geen spaties te hebben, en het zou moeten werken als dit het probleem is


Antwoord 5, Autoriteit 4%

Ik heb dit probleem tegengekomen toen ik geen variabele in het milieu had.

docker push ${repo}${image_name}:${tag}

repoen image_namewerden gedefinieerd, maar tagWas niet.

Dit resulteerde in docker push repo/image_name:.

die de docker: invalid reference format.


Antwoord 6, Autoriteit 4%

Ik voerde het hele opdracht in één regel uit, zoals het werd vermeld als zodanig

$ docker run --name testproject-agent \
-e TP_API_KEY="REPLACE_WITH_YOUR_KEY" \
-e TP_AGENT_ALIAS="My First Agent" \
testproject/agent:latest

Maar het zou een commando met meerdere regels moeten zijn, en Ik heb de opdracht regel voor regel gekopieerden na elke regel op entergedrukt en bam! het werkte.

Soms wanneer u van internet kopieert, wordt het teken new-lineweggelaten, vandaar mijn suggestie om de nieuwe regel handmatig in te voeren.


Antwoord 7, autoriteit 3%

Kom hier voor anderen:
Als u uw docker-commando in een bestand plaatst, zeg run.sh, controleer dan uw regelscheidingsteken. In Linux zou het LRmoeten zijn, anders zou je dezelfde foutmelding krijgen.


Antwoord 8

Dit gebeurt ook wanneer u ontwikkelingsdocker-composities zoals hieronder gebruikt, in productie. Je wilt geen afbeeldingen in productie bouwen, omdat dat de ideologie van containers doorbreekt. We zouden afbeeldingen moeten inzetten:

 web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"

Verander dat om de ingebouwde afbeelding te gebruiken:

 web:
    command: /bin/bash run.sh
    image: registry.voxcloud.co.za:9000/dyndns_api_web:0.1
    ports:
      - "8000:8000"

Antwoord 9

Gevonden dat het gebruik van docker-compose configmeldde wat het probleem was.

In mijn geval een override compose-bestand met een item dat niets opheft.


Antwoord 10

Ik had een probleem met Linux. Dat kwam doordat directorynamen spaties bevatten. Ik heb het opgelost door "$(pwd)/path/to/go"te gebruiken in plaats van $(pwd)/path/to/go


Antwoord 11

Ik kreeg hetzelfde probleem tijdens het gebruik van $(pwd) via powershell, ik heb het vervangen door ${pwd} en het werkte voor mij.

Hier volgen de details voor hetzelfde:

PS C:\Users\Systems\git\mastery\dockerfile> docker container run -d --name nginx -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx
docker: invalid reference format.
See 'docker run --help'.
PS C:\Users\Systems\git\mastery\dockerfile> docker container run -d --name nginx -p 8080:80 -v ${pwd}:/usr/share/nginx/html nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
Digest: sha256:25975292693bcc062becc20a1608936927f9950a42fb4474088f6292dacd4ec9
Status: Downloaded newer image for nginx:latest
f6ff08ed3b73095e85474bd2f248a7cae6b5bcdb53e12e4824d235df3cd268aa

Antwoord 12

Ik heb ()verwijderd en werkte zo voor mij
docker run -d -v $pwd/envoy.yaml:/etc/envoy/envoy.yaml:ro -p 8080:8080 -p 9901:9901
Ik gebruik Windows 10

Other episodes