我试图从DTR中提取Docker图像,但出现以下错误
#docker pull repo/appname
Trying to pull repository repo/appname ...
Pulling repository repo/appname
**invalid character '<' looking for beginning of value**
我不知道什么是错的。我只是谷歌和发现下面的链接有关的错误,但没有帮助。
https://github.com/stripe/stripe-go/issues/642
4条答案
按热度按时间z8dt9xmd1#
以前的答案suggested a network issue。
在您的情况下,关于访问DTR (Docker Trusted Registry),这也可能是一个正确的问题。
例如,如果需要
docker login
才能访问该图像,则会发送回404 HTML页面,并且docker命令将不知道如何解释HTML应答(以<!DOCTYPE html>
开始),因此无效字符'<
')实际上,BMitch在注解中指出DTR将发送回json消息,而不是HTML:
这个
<
来自其他东西,它在请求到达注册表API之前拦截了请求。在请求发送到注册表API、网络代理或容器内的反向代理之前,有东西捕获了请求。
无论哪种方式,
docker login
都不应该有帮助。我会 curl 注册表url/port,看看是什么产生的错误。
mnowg1ta2#
在我的情况下,问题实际上是图像在DTR中丢失。我不知道他们有多个DTR的几乎相似的名称(除了少数字符)在我的组织。所以图像被推到ABC DTR,但拉入正在寻找XYZ DTR。因此,我得到了上述错误。我能够成功地从正确的DTR拉入图像。
sg2wtvxw3#
我的问题是Docker Desktop已经过时了。一旦我更新了它,它就工作了。当加载Docker Desktop时,我也看到了一条“失败”的消息。
rjee0c154#
我们的团队最近收到了同样的问题,除了
invalide character
是c
。经过深入调查,我们的一位同事指出了一些关于
buildkit
https://docs.docker.com/build/buildkit/的问题。为了测试它,需要为守护进程停用buildkit
并重新启动它,以尝试确定它是否仍然在做。停用buildkit
后,一切都工作正常。但我们希望保持buildkit
激活以提高性能。所以我们最后一次机会就是重置Docker Desktop
.