Docker 错误:HTTP 408 响应正文:查找值开头的字符“<”无效

Rom*_*aan 18 docker

当我去时docker pull hello-world,我收到以下错误消息:

Error response from daemon: error parsing HTTP 408 response body: invalid character '<' looking for beginning of value: "<html><body><h1>408 Request Time-out</h1>\nYour browser didn't send a complete request in time.\n</body></html>\n\n"

安装的 Docker 版本:

Client:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:47:50 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:47:50 2016
 OS/Arch:      linux/amd64
Run Code Online (Sandbox Code Playgroud)

安装使用:curl -fsSL https://get.docker.com/ | sh

我已确保网络存在并且可以访问其他站点。请帮忙

更新 1:问题不能是设置 MTU,因为我可以在几天前从同一台计算机上的 Docker hub 中提取映像。

这个问题也不可能是 HTTP_PROXY 的问题,因为我在我的家庭网络中

Lem*_*Cat 20

我在运行各种 Debian/Raspbian 的 Raspberry Pi 板上多次遇到过这个问题(RPi 型号信息通过 获得cat /proc/cpuinfo | grep Model):

  • Raspberry Pi Model B Rev 1与基于 Debian 11 (bullseye) 的 Raspbian
  • Raspberry Pi 4 MOdel B Rev 1.4与 Debian 10(破坏者)

在这两种情况下,运行docker run --rm hello-world都会产生408此线程中原始问题中报告的 HTTP 状态代码:

$ docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: error parsing 
HTTP 408 response body: invalid character '<' 
looking for beginning of value: "<html><body>
<h1>408 Request Time-out</h1>\nYour browser 
didn't send a complete request in time.\n</body>
</html>\n".
See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)

解决方案(@Romaan作为旁白指出)是调整 MTU。我这样做如下:

sudo ip link set dev eth0 mtu 1400
docker run --rm hello-world
Run Code Online (Sandbox Code Playgroud)

并且hello-world容器已成功拉取并执行。

有关如何在 Debian 上永久调整网络接口 MTU 的示例可以在此处找到。


Rom*_*aan 5

该错误消息几乎没有误导性。问题不是存在无效字符,而是网络配置错误。我有 1 个 LAN 接口和 1 个 WLAN 接口。

LAN 接口连接到路由器 A,路由器 A 将请求转发到连接到互联网的路由器 B。而WLAN接口直接连接到路由器B。我忘记删除WLAN配置。

一旦我确保 WLAN 接口被移除,一切就顺利进行了。

简而言之:确保 DNS 解析有效且 MTU 设置正确。

另一个可能的错误原因

如果您使用的是 Mac,请确保允许无限制访问 Web 内容,如下所示:

在此输入图像描述

故障排除的另一个可能步骤

确保您的网络中没有代理或网络过滤器,也就是说,如果可能的话,连接到您的3G网络并重试,看看结果是否不同