Первый аргумент после «run», который не является флагом или параметром флага, анализируется как имя изображения. Когда этот синтаксический анализ не удается, он сообщает вам, что формат ссылки, он же имя изображения (но может быть идентификатором изображения, закрепленным изображением или другим синтаксисом), является недопустимым. В вашей команде:
docker run -p 8888:8888 -v `pwd`/../src:/src -v `pwd`/../data:/data -w /src supervisely_anpr --rm -it bash
Имя образа "supervisely_anpr" действительно, поэтому вам нужно посмотреть в команде раньше. В этом случае ошибка, скорее всего, pwd
связана с выводом пути с пробелом. Все, что находится после пробела, больше не является параметром, -v
и докер пытается проанализировать его как имя изображения. Исправление состоит в том, чтобы заключить параметры тома в кавычки, если вы не можете гарантировать, что он не содержит пробелов или других специальных символов.
При этом вы столкнетесь со следующей ошибкой: «исполняемый файл не найден». Все, что находится после имени образа, анализируется как команда для запуска внутри контейнера. В вашем случае он попытается запустить команду, --rm -it bash
которая почти наверняка потерпит неудачу, поскольку не --rm
будет существовать в виде двоичного файла внутри вашего изображения. Чтобы решить эту проблему, необходимо изменить порядок параметров:
docker run --rm -it -p 8888:8888 -v "`pwd`/../src:/src" -v "`pwd`/../data:/data" -w /src supervisely_anpr bash
Более подробная информация об этих двух ошибках и причинах представлена на моих слайдах здесь: https://sudo-bmitch.github.io/presentations/dc2018/faq-stackoverflow-lightning.html#29
docker run -p 8888:8888 -v "`pwd`/../src":/src -v "`pwd`/../data":/data -w /src --rm -it supervisely_anpr bash