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 命令返回“无效的引用格式”的主要内容,如果未能解决你的问题,请参考以下文章