我正在尝试从 DTR 中提取 docker 映像,但出现以下错误
#docker pull repo/appname
Trying to pull repository repo/appname ...
Pulling repository repo/appname
**invalid character '<' looking for beginning of value**
我不确定出了什么问题。我刚刚用谷歌搜索并找到了与该错误相关的以下链接,但没有帮助。
之前的回答暗示网络问题。
就您而言,关于访问 DTR(Docker 受信任的注册表),这也可能是一个正确的问题。
例如,如果需要
docker login
才能访问该图像,则会发回 <!DOCTYPE html>
开头) ,因此无效字符 '<
')
实际上,BMitch很有帮助地指出在评论中DTR会发回一条json消息,而不是HTML:
这个
来自其他东西,在请求到达注册表 API 之前拦截该请求。<
在请求发送到注册表 API 之前,有东西会捕获该请求。网络代理,或容器内的反向代理。
不管怎样,应该没有帮助。docker login
我会卷曲注册表 URL/端口,看看是什么生成了错误。
我的问题实际上是 DTR 中缺少图像。
我不知道我的组织中有多个名称几乎相似(除了少数字符)的 DTR。因此,图像被推送到 ABC DTR,但拉动正在查看 XYZ DTR。
因此,我得到了上述错误。我能够成功从正确的 DTR 中提取图像。
我的问题是 Docker Desktop 已经过时了。一旦我更新了它,它就起作用了。加载 Docker Desktop 时,我也看到了一条“失败”消息。
我们的团队最近收到了同样的问题,只不过
invalide character
是 c
。
经过深入调查,我们的一位同事指出了一些有关
buildkit
https://docs.docker.com/build/buildkit/的事情。为了测试它,需要停用守护程序的 buildkit
并重新启动它,以便尝试确定它是否仍在执行此操作。停用 buildkit
后,一切正常。但我们希望保持 buildkit
处于激活状态以提高性能,因此我们最后的机会就是重置 Docker Desktop
。
我也遇到了类似的问题
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)
...单独的命令每个)