Docker 错误:引用格式无效:存储库名称必须为小写

新手上路,请多包涵

我的一个项目遇到了这个 Docker 错误:

invalid reference format: repository name must be lowercase

此通用消息的各种原因是什么?

经过一番努力,我已经想通了,所以我将回答我自己的问题,以便在此处记录它,因为在进行网络搜索时解决方案不会立即出现,而且因为此错误消息没有描述Docker 遇到的直接问题。

原文由 HostedMetrics.com 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 6k
2 个回答

docker 中的“引用”是指向图像的指针。它可能是一个镜像名称、一个镜像 ID、在名称中包含一个注册服务器、使用 sha256 标记来固定镜像,以及任何其他可用于指向您要运行的镜像的东西。

invalid reference format 错误消息意味着 docker 无法将您提供的字符串转换为图像。这可能是一个无效的名称,或者它可能来自 docker run 命令行中的解析错误,如果这是您运行映像的方式。

如果名称本身无效,则 repository name must be lowercase 表示您在注册表或存储库名称中使用大写字符,例如 YourImageName:latest 应该是 yourimagename:latest

使用 docker run 命令行时,通常会导致没有用空格引用参数、缺少参数的值以及错误的命令行顺序。命令行的顺序如下:

 docker ${args_to_docker} run ${args_to_run} image_ref ${cmd_to_exec}

将 args 传递给运行时最常见的错误是卷映射扩展了包含空格的路径名,并且没有引用路径或转义空格。例如

docker run -v $(pwd):/data image_ref

如果您在目录 /home/user/Some Project Dir 中,这将在您的容器中定义一个匿名卷 /home/user/Some ,并尝试使用命令运行 Project:latest Dir:/data image_ref 。解决方法是引用论点:

 docker run -v "$(pwd):/data" image_ref

其他常见的错过引用的地方包括环境变量:

 docker run -e SOME_VAR=Value With Spaces image_ref

docker 会解释为试图运行图像 With:latest 和命令 Spaces image_ref 。同样,修复是引用环境参数:

 docker run -e "SOME_VAR=Value With Spaces" image_ref

对于撰写文件,如果您在图像名称中展开变量,则该变量可能无法正确展开。因此,如果您有:

 version: 2
services:
  app:
    image: ${your_image_name}

然后仔细检查 your_image_name 是否定义为全小写字符串。

原文由 BMitch 发布,翻译遵循 CC BY-SA 4.0 许可协议

在我的情况下是 -e 在 mysql docker 的参数之前

docker run --name mysql-standalone -e MYSQL_ROOT_PASSWORD=hello -e MYSQL_DATABASE=hello -e MYSQL_USER=hello -e MYSQL_PASSWORD=hello -d mysql:5.6

还要检查是否缺少空格

原文由 Jöcker 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题