我从文档中复制了docker run命令的一部分。它会产生invalid reference format错误。经过反复试验,我发现“行尾”\后出现了一系列空格。就像这样(用*标记的空格表示可见性)。如果没有空白,docker将开始处理(不完整的命令)。
docker run -d --name radicale \
-p 127.0.0.1:5232:5232 \
--read-only \
--init \****
--security-opt="no-new-privileges:true" \
tomsquest/docker-radicale -- not working我找不到可以解释错误消息的文档?这应该被认为是一个bug并修复吗?
发布于 2020-08-14 18:22:03
shell中的反斜杠(与docker无关)是转义字符。反斜杠后面的字符被不同地处理。通常,换行符结束shell中的一个命令,因此要跨越多个行,您可以转义换行符。同样,空格分隔参数,因此如果您希望将空格本身作为参数传递,则可以对其进行转义。
docker命令行是顺序敏感的,第一个不是前一个标志的标志或参数的内容将被解析为要运行的映像名称。图像名称有不同的语法,docker将所有这些语法统称为引用(您可以传递图像id、远程图像、不带标记的图像、带sha256引脚等,有很多方法可以指定图像)。当图像名称的解析失败时,您会得到一个无效的引用格式。
那么,在这种情况下,为什么图像名称解析失败?因为图像名称是(一个或多个空格字符)。您应该看到的下一个错误是--security-opt="no-new-privileges:true": command not found,它将提示您进入前一行的\,而不是转义换行符。
发布于 2020-08-14 17:50:56
试着在我标记为'*‘的--init后面删除奇怪的字符
docker run -d --name radicale \
-p 127.0.0.1:5232:5232 \
--read-only \
--init \******
****--security-opt="no-new-privileges:true" \
tomsquest/docker-radicale例如,尝试使用:
docker run -d --name radicale \
-p 127.0.0.1:5232:5232 \
--read-only \
--init --security-opt="no-new-privileges:true" \
tomsquest/docker-radicale然后,再次用\
https://stackoverflow.com/questions/63409969
复制相似问题