Docker 命令返回“无效的引用格式”

Posted

技术标签:

【中文标题】Docker 命令返回“无效的引用格式”【英文标题】:Docker command returns "invalid reference format" 【发布时间】:2018-05-06 05:37:20 【问题描述】:

我正在使用 docker 并使用以下命令:

docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html nginx:alpine

指向我的 /dist 文件夹,我的应用程序文件是由 angular 编译的。

我首先转到/dist 文件夹,然后从那里运行命令。这工作正常,我能够通过端口访问应用程序:9090,但是在 docker update 之后,我运行错误:

docker:无效的参考格式。 请参阅“docker run --help”。

我一直在搜索并检查以下帖子docker : invalid reference format,但这似乎与我的问题不同。 以下是基于命令的信息:docker version

Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:09 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:45:38 2017
 OS/Arch:      linux/amd64
 Experimental: false

有什么想法吗?

【问题讨论】:

echo docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html nginx:alpine 输出什么? 对不起,输出如下:docker run -d -p 9090:80 -v /Users/myUserName/projectFolder/ang5/main-app/dist/dist:/usr/share/nginx/html -v 的参数中是否有空格? 没有。至少当我仔细检查时我看不到任何空间。除了前面的空格和后面的空格:` -v ` 【参考方案1】:

Docker 在镜像名称之前看到了一些意想不到的东西,使它认为你的命令中除了 nginx:alpine 之外的东西是你的镜像名称。这可能是您的每个选项之前的无效-,通常通过网络复制/粘贴看到。它也可能是您路径中的一个空间。如果它就像路径中的空格一样简单,那么引用它会解决这个问题:

docker run -d -p 9090:80 -v "$(pwd):/usr/share/nginx/html" nginx:alpine

如果以上两个都不能解决您的问题,请首先确保以下工作正常:

docker run nginx:alpine

然后将单个参数添加回您的命令,直到找到破坏它的参数。请特别注意参数的顺序,run 的参数必须介于 run 和您的图像名称之间。图像名称后的参数作为运行命令传递。 run 之前的参数是 docker ***命令的选项。

【讨论】:

是的,引用解决了问题。伟大的。你们似乎都知道这与路径有关。在我的例子中,它包含破折号- 和一个数字5。通过引用可以解决问题。对不起,当我没有发布我的文件夹的真实路径时,我错过了它!我的坏。 “看到意想不到的东西”的例子:一个实际上不是一个空间,而是一个不可破坏的空间:***.com/a/2774507/6309。另一个:一个不是'-'的'-':***.com/a/170148/6309【参考方案2】:

您的 $(pwd) 包含不喜欢的字符(例如空格)。尝试在它周围使用引号:

docker run -d -p 9090:80 -v "$(pwd):/usr/share/nginx/html" nginx:alpine

【讨论】:

【参考方案3】:

好像你在某处有一个无效的名字。您是否尝试输出 pwd

尝试将 pwd 更改为静态路径。

查看可能对您也有帮助的文档 https://docs.docker.com/v1.10/engine/reference/commandline/run/#mount-volume-v-read-only

【讨论】:

@k.vincent 似乎是文件夹名称 'ang5' 可能是问题所在,请尝试在其他文件夹中运行它或尽可能重命名文件夹。 这可能是原因:Project - November?因为 projectFolder 里面有一个空白空间......就像这样:ISSUE - NOVEMBER? 很可能它是一个特殊字符,这就是为什么您应该尽可能尝试更改文件夹名称,或者只是在路径中没有数字、空格或任何特殊字符的地方运行它,例如this : /Users/myUserName/projectNovember/dist/: ... 否则你也应该尝试转义路径名“/Users/myUserName/projectNovember/dist/”【参考方案4】:

对我来说,发生这种情况是因为我把名字留空了。构建时使用-t somename设置名称

【讨论】:

以上是关于Docker 命令返回“无效的引用格式”的主要内容,如果未能解决你的问题,请参考以下文章

Docke 1 12 基础篇 48条命令 6

Docke 1 12 基础篇 48条命令 3

docke--Dockerfile构建docker镜像

docke-03-常用命令

Docker wwwhj6666com Compose18669144445 docke

转 Dock 外 命令解析