一尘不染

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

all

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

invalid reference format: repository name must be lowercase

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

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


阅读 48

收藏
2022-09-04

共1个答案

一尘不染

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定义为全小写字符串。

2022-09-04