我使用的是docker和以下命令:
docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html nginx:alpine
指向我的/dist
文件夹,我的应用程序文件是由angular编译的。
我首先进入/dist
文件夹,然后从那里运行命令。这运行得很好,我能够通过端口到达应用程序:9090
,但在Docker更新后,我运行时出错:
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
有什么想法吗?
6条答案
按热度按时间pqwbnv8z1#
Docker在图像名称前发现了一些意外的内容,使它认为您的命令中除了
nginx:alpine
之外的内容是您的图像名称。这可能是您的每个选项前的无效-
,通常在从Web复制/粘贴时看到。也可能是您的路径中的空格。如果它像您的路径中的空格一样简单,那么引用它将解决此问题:如果以上两种方法都不能解决您的问题,请首先确保以下方法有效:
然后将各个参数添加回命令中,直到找到破坏命令的参数为止。要特别注意参数的顺序,
run
的参数必须在run
和映像名称之间。映像名称后面的参数作为要运行的命令传递。run
前面的参数是docker
顶级命令的选项。qlckcl4x2#
您的$(pwd)包含不喜欢的字符(例如空格)。请尝试使用引号将其括起来:
docker run -d -p 9090:80 -v "$(pwd):/usr/share/nginx/html" nginx:alpine
cwdobuhd3#
似乎您在某处有一个无效的名称。您是否尝试输出pwd?
尝试使用静态路径更改pwd。
请查看文档,它可能也会对您有所帮助https://docs.docker.com/v1.10/engine/reference/commandline/run/#mount-volume-v-read-only
neekobn84#
对我来说,发生这种情况是因为我把名称留空了。
vd8tlhqk5#
在VM设置中指定要使用的映像容器时,在容器输入的末尾显式包含
:latest
标记会导致 * 无效引用格式错误。*所以我只好把这一点:
gcr.io/project/container
个不是这个:
gcr.io/project/container:latest
fxnxkyjh6#
如果您是从Shell脚本中运行docker命令,则启用详细模式将有助于查找问题。
集合-x
设置-v
我也遇到了这个问题,在调试时发现图像标记以CR字符结束,正因为如此,我得到了“无效的引用格式”。