我正在遵循使用Docker的本教程。当我试图运行Docker(在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.

我花了两个小时,我真的不明白哪里出了问题。任何想法都非常感谢。


当前回答

在我的情况下,问题是在完整的路径文件夹与回购,我使用终端和docker。我是这样的: 回购(1)/回购 将文件夹重命名为 回购/回购 它会有所帮助

其他回答

“run”之后的第一个不是标志或标志参数的参数将被解析为图像名称。当解析失败时,它会告诉您引用格式,即图像名称(也可以是图像id、固定图像或其他语法)无效。由你指挥:

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

图像名称“监ely_anpr”是有效的,因此需要查看命令的前面部分。在这种情况下,错误很可能来自pwd输出一个包含空格的路径。空格之后的所有内容不再是-v的参数,docker试图将其解析为图像名称。修复方法是在不能保证卷参数没有空格或其他特殊字符时引用卷参数。

当您这样做时,您将遇到下一个错误,“未找到可执行文件”。映像名称之后的所有内容都被解析为要在容器内运行的命令。在您的情况下,它将尝试运行命令——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 push ${repo}${image_name}:${tag}

Repo和image_name已定义,但tag未定义。

这导致docker推送repo/image_name:。

抛出docker: invalid引用格式。

发现使用docker-compose配置报告了问题所在。

在我的例子中,是一个重写compose文件,其中有一个条目没有重写任何内容。

删除\并不断地写入命令。

像这样写

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

而不是

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