You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Docker国内镜像后仍访问docker.io失败,如何彻底改用镜像源?

问题描述

执行docker pull时触发超时错误:

Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

已在/etc/docker/daemon.json中配置国内镜像源:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

执行重载配置与重启命令后:

sudo systemctl daemon-reload
sudo systemctl restart docker

通过docker info确认镜像源已配置成功,但docker pull仍报错;ping docker.io无法连通,将dig得到的IP添加到/etc/hosts也无效。需求是让Docker不再访问docker.io,仅使用已配置的国内镜像源。

解决方案

1. 直接指定国内镜像源拉取镜像

默认不带仓库地址的docker pull命令(如docker pull nginx)会优先请求docker.io。可以直接指定国内镜像源的完整地址拉取,示例:

docker pull docker.mirrors.ustc.edu.cn/library/nginx

拉取完成后给镜像打本地标签,方便后续使用:

docker tag docker.mirrors.ustc.edu.cn/library/nginx nginx:latest

2. 配置Docker禁止访问官方仓库

编辑/etc/docker/daemon.json,添加blocked-registries字段来禁止访问docker.io相关地址:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "blocked-registries": ["docker.io", "registry-1.docker.io"]
}

保存文件后重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

此时执行不带仓库地址的docker pull,Docker会直接使用配置的国内镜像源拉取。

3. 排查代理配置干扰

检查当前环境是否存在代理变量,可能导致请求被强制导向docker.io:

echo $HTTP_PROXY $HTTPS_PROXY

如果输出代理地址,可临时取消设置:

unset HTTP_PROXY HTTPS_PROXY

同时检查Docker的系统服务代理配置文件(如/etc/systemd/system/docker.service.d/http-proxy.conf),若存在代理配置,可注释或删除后重启Docker。

4. 清理Docker缓存

缓存的镜像元数据可能导致Docker仍尝试访问官方仓库,执行以下命令清理:

docker system prune -a

按提示确认后,会清理未使用的镜像、容器、网络及缓存数据。


内容的提问来源于stack exchange,提问作者Green 绿色

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:41:10