[已解决]failed to resolve source metadata for docker.io/library/node:16: failed to do request: Head

发布于:2025-08-20 ⋅ 阅读:(16) ⋅ 点赞:(0)

 ERROR: failed to solve: DeadlineExceeded: DeadlineExceeded: DeadlineExceeded: node:16: failed to resolve source metadata for docker.io/library/node:16: failed to do request: Head "https://registry-1.docker.io/v2/library/node/manifests/16": dial tcp 111.243.214.169:443: i/o timeout root@hcss-ecs-3e51:~/Personal-Web#

问题 Docker pull镜像时候 pull 失败

之前部署项目的时候 ,Docker 死活拉镜像拉不下来

看起来像,Docker 在尝试从 registry.docker-cn.com 拉取 node:16 镜像时,由于网络原因导致请求超时(i/o timeout)。这表明当前的镜像源可能存在问题,或者网络连接不稳定。

root@hcss-ecs-3e51:~/Personal-Web# docker build -t personal-web . [+] Building 30.1s (2/2) FINISHED docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 393B 0.0s => ERROR [internal] load metadata for docker.io/library/node:16 30.0s ------ > [internal] load metadata for docker.io/library/node:16: ------ Dockerfile:2 -------------------- 1 | # 使用 Node.js 官方镜像 2 | >>> FROM node:16 3 | 4 | # 设置工作目录 -------------------- ERROR: failed to solve: DeadlineExceeded: DeadlineExceeded: DeadlineExceeded: node:16: failed to resolve source metadata for docker.io/library/node:16: failed to do request: Head "https://registry-1.docker.io/v2/library/node/manifests/16": dial tcp 111.243.214.169:443: i/o timeout root@hcss-ecs-3e51:~/Personal-Web#

建议我们先  检测一下网络通讯

ping baidu.com

ping registry.docker-cn.com 

 解决方法1

vi /etc/docker/daemon.json

加上

"https://docker.1ms.run",
"https://docker.1panel.live/"

向这样

随后就可以了

解决方法2 

使用 华为云 阿里云 腾讯云

docker pull hub-mirror.c.163.com/library/ 你需要pull的东西

docker pull registry.cn-hangzhou.aliyuncs.com/library/ 你需要pull的东西

docker pull mirror.ccs.tencentyun.com/library/ 你需要pull的东西

又或者

1. 编辑 /etc/docker/daemon.json 文件,添加以下内容:

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

2. 重启Docker 

sudo systemctl daemon-reload
sudo systemctl restart docker

再尝试


错误原因

猜测

最初的错误 DeadlineExceeded: node:16: failed to resolve source metadata for docker.io/library/node:16: failed to do request: Head "https://registry-1.docker.io/v2/library/node/manifests/16": dial tcp 111.243.214.169:443: i/o timeout 表示 Docker 在拉取 node:16 镜像时,由于网络连接超时导致操作失败。

Docker 默认从 Docker Hub(https://registry-1.docker.io)拉取镜像,而 Docker Hub 的服务器位于国外, 当 Docker 尝试连接 Docker Hub 服务器获取 node:16 镜像的元数据信息时,由于网络延迟过高或连接中断,在规定的时间内(即超时时间)未能完成请求,就会触发 i/o timeout 错误。

当我们配置了这些镜像加速地址后,Docker 会优先从这些国内的加速镜像源拉取镜像。大大提高镜像拉取的速度,减少网络延迟和超时的情况,从而成功解决了之前拉取镜像时出现的超时错误。

简单来说,就是通过更换到更快速、稳定的国内镜像源,避免了因连接国外 Docker Hub 服务器时网络问题导致的拉取镜像失败。


网站公告

今日签到

点亮在社区的每一天
去签到