Docker错误:参考格式无效:存储库名称必须小写

Hos*_*com 37 docker docker-compose

使用我的一个项目进入Docker错误:

invalid reference format: repository name must be lowercase

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

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

Jöc*_*ker 29

在我的情况下是-emysql 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
Run Code Online (Sandbox Code Playgroud)

还要检查是否缺少空格

  • 与我一样,我在环境变量之一之前缺少“-e”。 (7认同)

BMi*_*tch 27

泊坞窗中的“引用”是指向图像的指针。它可以是映像名称,映像ID,名称中包括注册表服务器,使用sha256标记固定映像以及可以用于指向要运行的映像的其他任何内容。

invalid reference format错误消息表示docker无法将您提供的字符串转换为图像。这可能是无效的名称,或者它可能是来自docker run命令行前面的解析错误(如果您使用的是这种方式)。对于撰写文件,如果在图像名称中扩展变量,则该变量可能无法正确扩展。

docker run命令行中,这通常是导致不用空格引用参数,并弄错了命令行顺序的结果。命令行顺序为:

docker ${args_to_docker} run ${args_to_run} image_ref ${cmd_to_exec}
Run Code Online (Sandbox Code Playgroud)

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

docker run -v $(pwd):/data image_ref
Run Code Online (Sandbox Code Playgroud)

修复很简单:

docker run -v "$(pwd):/data" image_ref
Run Code Online (Sandbox Code Playgroud)

  • “使用 docker run 命令行,这通常是由于不使用空格引用参数,并错误地执行命令行的顺序造成的”这真的很有帮助 (4认同)
  • 解释需要引用路径 `docker run -v "$(pwd):/data" image_ref` 的部分对我的情况有所帮助。 (3认同)

小智 8

就我而言,问题出在参数安排上.最初我有--name环境参数之后的参数,然后是体积和attach_dbs 参数,以及命令末尾的图像,如下所示.

docker run -p 1433:1433 -e sa_password=myComplexPwd -e ACCEPT_EULA=Y --name sql1 -v c:/temp/:c:/temp/ attach_dbs="[{'dbName':'TestDb','dbFiles':['c:\\temp\\TestDb.mdf','c:\\temp\\TestDb_log.ldf']}]" -d microsoft/mssql-server-windows-express
Run Code Online (Sandbox Code Playgroud)

重新排列下面的参数后一切正常(基本上放--name参数后跟图像名称).

docker run -d -p 1433:1433 -e sa_password=myComplexPwd -e ACCEPT_EULA=Y --name sql1 microsoft/mssql-server-windows-express -v C:/temp/:C:/temp/ attach_dbs="[{'dbName':'TestDb','dbFiles':['C:\\temp\\TestDb.mdf','C:\\temp\\TestDb_log.ldf']}]"
Run Code Online (Sandbox Code Playgroud)


小智 7

当前工作目录中有一个空格,可$(pwd)用于映射卷。不喜欢目录名称中的空格。

  • 这为我解决了!我将 `$(pwd)` 用引号括起来,它起作用了。 (3认同)

Hos*_*com 6

就我而言,图片名称定义为docker-compose.yml包含大写字母。提到的错误消息repository而不是错误的事实image并不能帮助描述问题,因此花了一些时间才弄清楚。

  • 通过搜索网络发现的另一个常见原因是人们在安装卷时目录名称中包含空格字符。 (3认同)

Z3d*_*d4s 6

让我强调一下,Docker甚至不允许混合字符。

好: docker build -t myfirstechoimage:0.1 .

坏: docker build -t myFirstEchoImage:0.1 .

  • 我在 SpringBoot 项目中使用“spotify”maven 依赖项来构建 docker 镜像,在过去的几个小时里,我一直在努力理解这个问题。项目名称(包含大写字符)原来是问题所在! (2认同)

小智 5

在 MacOS 上,当您在 iCloud 驱动器上工作时,您的 $PWD 将包含一个目录“移动文档”。它似乎不喜欢这个空间!

作为一种解决方法,我将我的项目复制到本地驱动器,其中我的项目文件夹的路径中没有空间。

我看不出有什么方法可以绕过 iCloud 的默认路径,它是 ~/Library/Mobile Documents/com~apple~CloudDocs

“移动文档”中路径中的空格似乎是 docker run 不喜欢的。

  • 您可以逃避空间,而不是复制项目,例如“Mobile\ Documents” (2认同)