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 pwd
een pad uitvoeren met een ruimte erin. Alles nadat de ruimte niet langer een parameter is op -v
en 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 bash
te draaien, die bijna zeker zal mislukken sinds --rm
zal 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-pasted
de 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}
repo
en image_name
werden gedefinieerd, maar tag
Was 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 enter
gedrukt en bam! het werkte.
Soms wanneer u van internet kopieert, wordt het teken new-line
weggelaten, 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 LR
moeten 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 config
meldde 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