Я следую этому руководству: https://medium.com/towards-data-science/number-plate-detection-with-supervisely-and-tensorflow-part-1-e84c74d4382c
и они используют докер. Когда я пытался запустить докер (внутри скрипта run.sh):
docker run -p 8888:8888 -v `pwd`/../src:/src -v `pwd`/../data:/data -w /src supervisely_anpr --rm -it bash
Получил ошибку:
docker: invalid reference format.
Я потратил 2 часа и не очень понимаю, что не так. Любая идея действительно ценится.
docker run -p 8888:8888 -v "`pwd`/../src":/src -v "`pwd`/../data":/data -w /src --rm -it supervisely_anpr bash
--rm
и-it
между ними,run
и имя изображения. Однако это не объясняет сообщение об ошибке. Вы проверяли, нет ли у символов имени изображения какой-либо специальной кодировки или верхнего регистра? Копировать и вставить из вашего сниппета работает для меня, аdocker run --rm foo! bash
выдает ту же ошибку, что и ваша."$(pwd)"
(современная форма"`pwd`"
). Ваша команда делаетсяdocker run -p 8888:8888 -v "$(pwd)"/../src:/src -v "$(pwd)"/../data:/data -w /src supervisely_anpr --rm -it bash
.Ответы:
В powershell вы должны использовать
${pwd}
vs$(pwd)
источник
docker run --rm -ti --name zalenium -p 4444:4444 -p 5555:5555 \ -e SAUCE_USERNAME -e SAUCE_ACCESS_KEY \ -v /tmp/videos:/home/seluser/videos \ -v /var/run/docker.sock:/var/run/docker.sock \ dosel/zalenium start --sauceLabsEnabled true
что не так с моей командой? Это также дает ту же ошибку.Первый аргумент после «run», который не является флагом или параметром флага, анализируется как имя изображения. Когда этот синтаксический анализ не удается, он сообщает вам, что формат ссылки, он же имя изображения (но может быть идентификатором изображения, закрепленным изображением или другим синтаксисом), является недопустимым. В вашей команде:
Имя образа "supervisely_anpr" действительно, поэтому вам нужно посмотреть в команде раньше. В этом случае ошибка, скорее всего,
pwd
связана с выводом пути с пробелом. Все, что находится после пробела, больше не является параметром,-v
и докер пытается проанализировать его как имя изображения. Исправление состоит в том, чтобы заключить параметры тома в кавычки, если вы не можете гарантировать, что он не содержит пробелов или других специальных символов.При этом вы столкнетесь со следующей ошибкой: «исполняемый файл не найден». Все, что находится после имени образа, анализируется как команда для запуска внутри контейнера. В вашем случае он попытается запустить команду,
--rm -it bash
которая почти наверняка потерпит неудачу, поскольку не--rm
будет существовать в виде двоичного файла внутри вашего изображения. Чтобы решить эту проблему, необходимо изменить порядок параметров:Более подробная информация об этих двух ошибках и причинах представлена на моих слайдах здесь: https://sudo-bmitch.github.io/presentations/dc2018/faq-stackoverflow-lightning.html#29
источник
# !/bin/bash
(обратите внимание на пробел между#
и!
до,#!/bin/bash
а затемEnd of Line Sequence
отCRLF
доLF
. Это все, что я сделал. Спасибо @BMitch за то, что поделился слайдами.У меня была такая же проблема, когда я
copy-pasted
выполнял команду. Вместо этого, когда я ввел всю команду, она сработала!Удачи...
источник
--name
вставлено-
из-за автоматической смены редактора. Спасибо, что сэкономили мне время.У меня была похожая проблема. Проблема, с которой я
$(pwd)
столкнулся, заключалась в том, что там было место, которое выбрасывало докер.источник
Я столкнулся с этой проблемой, когда у меня не было заданной переменной среды.
repo
иimage_name
были определены, ноtag
не были.Это привело к
docker push repo/image_name:
.Который бросил
docker: invalid reference format.
источник
Обнаружено, что использование
docker-compose config
сообщило, в чем проблема.В моем случае переопределенный файл компоновки с записью, которая ничего не переопределяла .
источник
Это также происходит, когда вы используете в рабочей среде docker compose, как показано ниже. Вы не хотите создавать изображения в производственной среде, так как это ломает идеологию контейнеров. Мы должны развертывать образы:
Измените это, чтобы использовать созданный образ:
источник