Docker 镜像拉取错误无效字符

问题描述 投票:0回答:5

我正在尝试从 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

docker docker-registry harbor
5个回答
5
投票

之前的回答暗示网络问题

就您而言,关于访问 DTR(Docker 受信任的注册表),这也可能是一个正确的问题。
例如,如果需要

docker login
才能访问该图像,则会发回 404 HTML 页面,并且 docker 命令将不知道如何解释 HTML 答案(以
<!DOCTYPE html>
开头) ,因此无效字符 '
<
')

实际上,BMitch很有帮助地指出在评论中DTR会发回一条json消息,而不是HTML:

这个

<
来自其他东西,在请求到达注册表 API 之前拦截该请求。

在请求发送到注册表 API 之前,有东西会捕获该请求。网络代理,或容器内的反向代理。
不管怎样,

docker login
应该没有帮助。

我会卷曲注册表 URL/端口,看看是什么生成了错误。


2
投票

我的问题实际上是 DTR 中缺少图像。

我不知道我的组织中有多个名称几乎相似(除了少数字符)的 DTR。因此,图像被推送到 ABC DTR,但拉动正在查看 XYZ DTR。

因此,我得到了上述错误。我能够成功从正确的 DTR 中提取图像。


0
投票

我的问题是 Docker Desktop 已经过时了。一旦我更新了它,它就起作用了。加载 Docker Desktop 时,我也看到了一条“失败”消息。


0
投票

我们的团队最近收到了同样的问题,只不过

invalide character
c

经过深入调查,我们的一位同事指出了一些有关

buildkit
https://docs.docker.com/build/buildkit/的事情。为了测试它,需要停用守护程序的
buildkit
并重新启动它,以便尝试确定它是否仍在执行此操作。停用
buildkit
后,一切正常。但我们希望保持
buildkit
处于激活状态以提高性能,因此我们最后的机会就是重置
Docker Desktop


0
投票

我也遇到了类似的问题

docker pull <image>
但错误有点详细:

ERROR: error parsing HTTP 400 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>400 The SSL certificate error</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n<center>The SSL certificate error</center>\r\n<hr><center>openresty</center>\r\n</body>\r\n</html>\r\n"

我发现证书已过期(

/etc/docker/certs.d/<docker hostname>
1,因此我必须从 machine_public.pem 更新 client.cert 并从 machine_private.pem 更新 client.key (使用
cp <dir>/machine_(public|private).pem <dir>/client.(cert|key)
...单独的命令每个)

1 https://docs.docker.com/engine/security/certificates/#:~:text=A%20custom%20certificate%20is%20configured,%2Fetc%2Fdocker%2Fcerts.

© www.soinside.com 2019 - 2024. All rights reserved.